PHP......as a unified cross-platform utility scripting language
EDIT: Based upon the feedback, I would like to clarify that I am not promoting PHP as the one and only cross-platform scripting language. Python, Ruby, NodeJS+Electron, Perl, and many other languages are used for creating high-quality professional cross-platform apps. The purpose of this article is to shed light on how a language that no one would ever think to write a cross-platform application in is actually on-par with the more popular languages. I know you are likely laughing because the prospect that a scripting language embedded in served web pages could be used to create functional system utilities and applications sounds completely absurd, so hear me out:
You can easily write the same code for Linux, Windows, and BSD so long as you don't use any platform-dependent POSIX API.
For the GUI, use the script in the post below (see "Secure GUI Via Web Browser In PHP"), which internally executes php -S localhost:12345 after many many security checks, precautions, and hardenings. This will allow one to execute HTML files and JavaScript POSTing to PHP files for interactive content and such. I know this was meant for debugging, but really it can do a lot more. It offers a GUI that is 100% cross-platform with zero modification.
PHP has portable binaries for Windows that you can ship with your application
PHP can easily load an ini file to configure everything to ensure your application executes the exact way you intended it to. Your PHP-based software would include its own personal php.ini file to ensure that PHP works right for the project.
PHP is available pretty much everywhere. Linux, BSD, Solaris, Windows, MacOS, heck even Haiku.
PHP is concise and intuitive. I have found myself writing far fewer lines of code in PHP and being much more confident about error-handling than any other language. The reason why PHP has a bad reputation is not that its a bad language, its because people try to copy and paste and shove-together snippets from StackOverflow to make a server with PHP, which is always a 100% bad idea. SO is good, but exclusively copying snippets you don't understand from SO is very very bad. It's also about good practices and good habits. Some places tell you to use ==, other places tell you the double-equally is evil and only use ===. Really, both sides are wrong and you should understand the difference between === and == so that you know when to use each. I use === ~99.98% of the time and == ~0.02% because I know their effects and implications and am deliberate about my usage. When I do want to use ==, those two equals signs save me tons of work and avoid introducing possible bugs because I know the exact behavior of what will happen.
PHP is easily installable via whatever package manager is installed on the *nix.
Very avoidable breaking changes between versions. The reason why many scripts are stuck to older versions of PHP is because they were using old archaic PHP APIs that have been deprecated for quite a while. Further, PHP 7 introduces nothing that can't be done in PHP 5.4 with a little more work. If you use core solid PHP 5.4 APIs (which are abundant and not constricting at all), your PHP code will run in any version of PHP released in the last 8 years. How many scripting languages can say that? NodeJS v0.12 wasn't released until 2015, and it's adding all sorts of new important APIs every year, pushing from call-back hell into Promises. I'll bet that 10 years from now, the call-back APIs will be completely removed. So much for backward-compatible NodeJS code (without a ton of effort put into backward-compatibility, of course). I am not saying that NodeJS+Electron is bad; it has many unique uses that would be difficult/impossible to do in other languages.
Absolutely astounding performance for a scripting language. Every time I run a PHP benchmark, I am wowed by the magic going on under the hood. It outperforms every other scripting language hands-down because PHP has most of its functions heavily-optimized in C code.
Much lighter than Electron both in file size and system resources. Electron is needed for advanced things like RTC, but most applications don't need these advanced features. For comparison, the proportional set size usage of sleep(999) in PHP7.4 is only 6,888KiB, whereas setTimeout(function(){},999999) in NodeJS12 results in a PSS of 25,691KiB. Practicality-wise, PHP comes with every utility and helper you want, whereas you often want to load convenience libraries in NodeJS. The PSS usage of the npm utility written in NodeJS is 52,104KiB because of all these memory-bloating convenience libraries.
Full-toolbox is included by default. It has been extremely rare that I have ever had to install an extension other than CURL onto PHP, and I usually don't even have to install CURL because much of the basic functionality of CURL already comes with PHP out the box. I have almost always found every possible method and convenience feature already packed into the core of PHP.
You can bundle tons of PHP files and any kind of resource up into a single executable PHAR file. When you need a single self-contained file, PHP is indispensable. Granted, an app image provides much of the same functionality, but app images only work well with compiled languages and not so well with scripting languages. (Scripting languages do work, but it can be a pain to deal with the associated dependencies of the scripting language when moving an app image to a different PC)
PHP automagically converts from Unix paths to Windows paths and vice-versa depending upon your platform. PHP DOES NOT UNIFY UNIX AND LINUX PATHS! It just swaps forward slashes with backslashes on Windows and vice-versa on Unix, so you can do //sharedfoldername/path/to/file in PHP on Windows to access a shared folder.
PHP has amazing operator integration with objects, just the way you would hope things would happen but never do in other languages: array(1,2,3) === array(1,2,3) is true because even though each array is at a different location in memory, comparisons in PHP compare the contents of the arrays instead of the actual values. This greatly cuts down on the amount of code one needs to write.
PHP has excellent error handling that enables much PHP code to survive mistakes that would otherwise kill the whole program in other languages because it does what you would hope it would do: array()[10][20] emits a warning to tell you you should do something but still yields NULL anyway because that's what it should do. Instead of emitting a null pointer exception or segmentation fault error, PHP continues on its merry little way just like you would hope.THE PROBLEM with PHP's error handling is that PHP makes it too easy to forget about it. People write code that depends upon PHP's wonky error handling, and this causes these problems to escalate until you reaching a point in your coding where nothing works as you want it to. The problem is not PHP's error handling, rather it's people who think "it works, so let's not touch it." Those people are the real problem, not PHP.
PHP itself is very secure and thoroughly tested to eliminate potential security vulnerabilities in the underlying engine. This is not to say that all PHP code is secure because it isn't, rather this is to say that PHP functions do not have strange unedge cases which could result in undefined behavior and escalation of privileges or buffer execution attacks.
PHP has separate operators for string concatenation and addition. This is a huge plus because PHP is loosely typed, so having a separate operator for string concatenation tells PHP it needs to convert both operands to a string, which cuts down on validation code and reduces the potential for bugs.
PHP now comes pre-installed on Macs. There's no need for the user to have to open the terminal to install brew. This is because a decent portion of people who use Macs are rather computer illiterate and would recoil at the notion of opening this evil hacker black magic thingamajigger called a "terminal."
User-defined variables are separated from built-in methods via a prefixed dollar sign so that future versions of PHP do not implement a function with the same name. This issue is not totally fixed of course because you can still use define and write functions without the dollar sign, however, I would say the dollar sign makes code easier to read and mitigates this forwards-compatibility issue.
PHP's policy on strings is laissez faire, which is to say that PHP views strings as an array of bytes with helper functions layered on top. This is advantageous over, say Java and Javascript, which both manipulate strings as if they were UCS-2 but displays them in the GUI/console as if they were UTF-16 (WTF, right?). To further complicate matters, Base64 in JavaScript works by treating the UCS-2 string as a Windows 1250 string and throwing an error on characters larger than 255 whereas URI encoding works by translating the UCS-2 into UTF-8 by viewing it as UTF-16 before viewing the UTF-8 as Windows 1250 and escaping the non-URL-safe characters, whereas XMLHttpRequest's responseText and fetch with .text() both work by autodetecting the downloaded document's encoding and converting it to UTF-16 in UCS-2 (WTF, right?). It is a necessary evil for PHP to have Windows 1250 strings in order to avoid the headaches of other languages like JavaScript because, when working with binary data, JavaScript cannot guarantee that none of the characters in the string won't be above 255, whereas PHP does guarantee. This greatly reduces bugs and proactively solves many headaches. I am not saying that how PHP handles strings is all good. It is not good for human text because it messes with multibyte characters. See the cons section below.
Controversially, the @ operator can be used for lots of good. The problem is that it is too often misused to handle errors that should be dealt with more aptly. I use the @ operator almost exclusively for IO and other interactions with the outside world where I already have a mechanism for dealing with error, I already have the code prepared for the function not working, and I just don't want to see a useless warning message that I can't do anything to fix. Basically, developers should not view @ as telling PHP to "shut up." A better way to look at it is that @ tells PHP "it's OKAY. I am already handling failure cases and don't need any diagnostics about them."
For some people, PHP is the bane of their existence. It would be the bane of my existence too if I had to pick up the PHP project of someone who wrote bad PHP code. However, dealing only with good PHP code, I view writing PHP as a delightful treat to work with. CONS OF USING PHP:
Durability-wise, there is only one con I can think of: there's no standardized location for the PHP binary on all Unixes like there is with Bash having #!/usbin/env sh, but that's true of most scripting languages.
PHP is too easy to start using, and thus many people use it incorrectly and write bad bug-ridden code because they don't know how to write good code due to lack of experience.
Performance-wise, well-written C++ and Java can beat well-written PHP hands-down. PHP8 may get on-par with well-written Java with JIT, but it will never outperform hand-optimized C++ code.
You can load platform-dependent extensions that need to be compiled per-platform, but this is true with just about every coding language in existence.
PHP does not unify the crazy windows drive letter and shared network folder scheme with the utopian Unix methodology of one root folder, and I doubt any language ever will. HOWEVER, PHP does work well with UNC paths on Windows, and not all programs on Windows work well with UNC paths, so that's a plus.
PHP has CoW by default for objects passed to functions and scoping must be done explicitly, which (in this dev's mind) both really stink.
PHP is loosely typed and does not do a look-ahead validation that all named functions actually exist. A small typo in one of the standard PHP functions could cause the PHP code to unexpectedly crash.
It is too easy to make the GUI insecure. Without proper authentication, any other application could connect to the socket, and feed malicious data into the socket as if it were from the webpage. This assumes the malware is already in your system or has a tunnel to your system because an external attacker cannot access applications bound to 127.0.0.1 from outside the computer.
Some of the PHP API is inconsistent, and this leads to some confusion when writing code.
PHP is a bit weak/lacking when it comes to certain utilities lacking a multibyte counterpart.
PHP is not cross-platform when it comes to larger >2GB files. Big files only work out of the box with 64bit integers on 64bit *nixes: Linux: BSD, and MacOS. PHP in 32-bit PCs and Windows takes the lower thirty-two bits of the file size. Ideally, PHP would use floating-point doubles on 32-bit platforms to represent these larger file sizes, but sadly it does not.
PHP does not distinguish between binary strings and multibyte strings. Ideally, multibyte characters should by a separate type of variable (multibyte instead of string, perhaps) that is manipulated like an array of 24-bit integers instead of as a string. Multibytes would use a # for literals, concatenation, and conversion: #"Example string\n" is a literal and $mbstr # #"str" appends the text str onto the variable mbstr, but can be shorted to $mbstr # "str" because the binary string "str" is automatically converted to multibyte as if it were UTF-8 encoded. Ideally, all string functions would also accept multibytes and behave the same with multibytes as they do with strings with the exception being that the atomic unit of multibyte strings is 24bits. However, this is sadly not the case in PHP (yet).
Backslashes are actually valid characters in a Unix pathname in certain file systems, albiet improper and frowned-upon. The only truly restricted characters are the null character and forwards slash on some file systems. This can conflict with PHP auto-transforming to and fro between backslash and forwards slash depending upon the platform. This really only poses a problem on Unix systems, where malicious code might create a file name in a permissive parent directory, then direct PHP to read a folder with backslashes in the name to coerce PHP down another folder in the same directory towards revealing the contents of a secret file. Not really sure about the practicality or usage of this exploit. Just throwing it out there.
I would say the biggest CON of PHP is that it's not really the beginner language it's advertised to be. It's used to build very powerful servers that need to be very secure to prevent very bad things from happening. This is not an appropriate task for a beginner to coding. Controversially, I would say that PHP is an excellent precision tool for advanced power-users. Auto-PHP-detection And Dependency Installer Call me crazy/insane/whatever, but my favorite software is software that just works. I do use my daily driver as a toy when I want to play with it, but when I stop playing with it, I want my daily driver to stop playing with me. I don't want to have to try to open LibreOffice, only to discover that a recent update to one of its dependent libraries has caused LibreOffice to no longer function until I sort out the dependencies because I have work to do and work that needs to get done. I present you.....the PHP auto-detector and auto-installer script. It is supposed to work in any shell except older versions of Solaris because they have their own backwards funky shell language going on that I don't want to deal with. Example of an integrated CLI utility using PHP script. Notice how this is actually a shell script that searches for PHP and uses it to execute the rest of the file. This script will only work on Unix systems, not on windows.
#!/usbin/sh searchPathForPhp() { ( IFS=: for p in $PATH; do phppath="$(command -v "$p"/php[0-9]*)" 2>/dev/null if test "0$?" -eq 0; then echo "$phppath" | tail -n1; return 0; fi done ) return 1; } zenitylogin() { prompter="$1"; shift 1 if test -z "$username" -eq 0; then msg='Please enter username and password so that PHP can be installed so things can continue to work smoothly' logininfo="$("$prompter" --forms --text="$msg" --add-entry='Username' --add-password='Password' --separator=' ')" # If the user clicked "cancel" or a Zenity error, then don't even try: if test "0$?" -ne 0; then exit 1; fi username="$(printf '%s' "$logininfo" | head -n1)" password="$(printf '%s' "$logininfo" | tail -n1)" fi printf "%s\n" "$password" | sudo -S -u "$username" -- "$@" } run-su-cmd() { sucmd="$1"; program="$2"; shift 2 "$sucmd" -c "'""$program""'"' "$@"' - "$USER" -- "$0" "$@" } phppath="$(command -v php)" 2>/dev/null if test "0$?" -ne 0; then # calling searchPathForPhp will set the status code to 1 if not available phppath="$(searchPathForPhp)" fi if test "0$?" -ne 0; then # Prompt the user about installing packages and confirm confmsg="$(pwd) needs to install PHP in order to work. Are you OKAY with this script installing PHP automatically?" if test -x "$(command -v xmessage)" 2>/dev/null; then test "$(xmessage -buttons Yes,No -default No -print "$confmsg")" = "No" else # Prompt the user about installing packages test "$(osascript -e 'display dialog "'"$confmsg"'" buttons {"Yes", "No"} default button "No"')" = "No" fi if test "0$?" -ne 0; then exit 1; fi # Exit if we don't have consent e="" if test "$(id -u)" -ne 0; then case "$-" in "*i*") if test -x "$(command -v sudo)" 2>/dev/null; then # Most Linux distros e=sudo else # BSD e="run-su-cmd su" fi ;; *) if test -x "$(command -v pkexec)" 2>/dev/null; then e="pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY" elif test -x "$(command -v gksudo)" 2>/dev/null; then e=gksudo elif test -x "$(command -v gksu)" 2>/dev/null; then e="run-su-cmd gksu" elif test -x "$(command -v zenity)" 2>/dev/null; then e="zenitylogin zenity" elif test -x "$(command -v yad)" 2>/dev/null; then e="zenitylogin yad" fi ;; esac fi if test -x "$(command -v apt)" 2>/dev/null; then $e apt install -y php-cgi && $e apt install -y php72 || $e apt install -y php elif test -x "$(command -v apk)" 2>/dev/null; then $e apk add --no-cache php72 || $e apk add --no-cache php elif test -x "$(command -v apt-get)" 2>/dev/null; then $e apt-get install -y php-cgi && $e apt-get install -y php72 || $e apt-get install -y php elif test -x "$(command -v yum)" 2>/dev/null; then $e yum install php72-cli || yum install php-cli elif test -x "$(command -v pacman)" 2>/dev/null; then $e pacman -S php72 || $e pacman -S php elif test -x "$(command -v brew)" 2>/dev/null; then $e brew install php72 || $e brew install php elif test -x "$(command -v dnf)" 2>/dev/null; then $e dnf install php72-cli || $e dnf install php-cli elif test -x "$(command -v zypper)" 2>/dev/null; then $e zypper install php-cli || $e zypper install php elif test -x "$(command -v pkg)" 2>/dev/null; then $e pkg install php72 elif test -x "$(command -v emerge)" 2>/dev/null; then $e emerge --ask dev-lang/php:7.2 elif test -x "$(command -v pkgman)" 2>/dev/null; then $e pkgman install cmd:install fi phppath="$(sh -c 'command -v php7.2')" 2>/dev/null if test "0$?" -ne 0; then phppath="$(sh -c 'command -v php')" 2>/dev/null if test "0$?" -ne 0; then # failed to install PHP echo "FAILED TO INSTALL PACKAGE: Package manager not found, you have no internet connection, or another error occured. You must manually install PHP (>=5.4)">&2 exit 1 fi fi fi if test -x "$(command -v grep)" 2>/dev/null; then grep -A1073741823 '<''?php' "$0" | php -- "$@" else echo '/PHP_SCRIPT_''STARTS_AFTER_HERE/+1,$p' | ed -s "$0" | php -- "$@" fi exit 0 PHP_SCRIPT_STARTS_AFTER_HERE You'll probably want to add -c . to the arguments list to use the php.ini in the current directory to ensure completely consistent behavior wherever this script goes or whatever updates happen. Here is the Batch script for Windows:
@php.exe the-php-script.php -- %*
However, one might want to use a slightly longer VBScript in order to hide the ugly terminal window:
ReDim arr(WScript.Arguments.Count-2) For i = 1 To WScript.Arguments.Count-1 arr(i-1) = """"+WScript.Arguments(i)+"""" Next CreateObject("Wscript.Shell").Run "php.exe the-php-script.php " & Join(arr.ToArray, " "), 0
The PHP for Windows would be extracted into the same folder as the Batch script to provide php.exe. Then, the contents of the-php-script.php would be the same as in the script for Unix after the PHP_SCRIPT_STARTS_AFTER_HERE marker:
It's that easy to redeploy your PHP script on Windows.
Secure GUI Via Web Browser In PHP
It's very possible and very easy to have a very secure GUI in PHP, you just have to do it very correctly. The way to establish a secure GUI is to pipe the command to open the browser with a query string UUID that JavaScript sets a cookie into the OSes shell in order to hide the command line from other processes to hide the UUID. It also uses netstat and cross-platform detection of the users browsers to ensure that a malicious program is not trying to pose as the browser. If the malware has already gained root access all bets are off and much hope is lost, so this assumes the malware is running as an ordinary user. Observe.
// open-www-gui.php // See https://pastebin.com/FPvP3SP6
This should open a PHP local server in the gui-root directory, and the index.php in the gui-root directory needs this JavaScript to hide the UUID.
All PHP files in the gui-root need this AT THE VERY TOP for validation:
6)); unset( $usedHashAlgo ); } else { if (defined('CRYPT_BLOWFISH') && CRYPT_BLOWFISH == 1) { $gotHash = crypt( base64_encode($inPrivKey), get_cfg_var("custom_public_gui_param") ); } else { // else, try to make the best with what little we have got: $gotHash = hash("sha256", $input, FALSE); } } // hash_equals would be superfluous because we are timing for consistancy if ($gotHash !== get_cfg_var("custom_public_gui_hash")) { @usleep( (@random_int(20000,60000)?:240000) - (@microtime() - $authStart) ); exit(1); } unset($authStart); unset($inPrivKey); unset($gotHash); // clean up
And, voila!: a secure PHP gui to the browser that cannot be intercepted by any non-root user or external attacker. It's not just a proof of concept, this could actually be reliably used in production too. We additionally need a execStdIn.vbs on Windows so that the PHP server and web browser can continue running in the background after the initial PHP script executes because Windows does not have nohup and the start command either starts a detached terminal or stays in the invisible window but can't start invisible and detached.
' execStdIn.vbs Dim stdin: Set stdin = WScript.StdIn Dim input: input = Replace(stdin.ReadAll, "^", vbCrLf) Call ExecuteGlobal(input)
Warcraft III | Introduction | Beginner Guides | Community Links
1. Subreddit Info
Welcome to warcraft3, the official Blizzard recognized subreddit for all related topics. Content and discussions can range from the base game, campaign/lore, custom games, competitive ladder, memes, esports, modding, art, and more! Please see the rules on the right hand side. Official Discord: Warcraft 3 United - Players and representatives from hundreds of WC3 communities gathered in one place!
2. Basic Game Info
Warcraft III: Reign of Chaos (2002) is a real time strategy game set in the fantasy universe of Azeroth. The game combines classic RTS mechanics with RPG elements as you play through the Human, Orc, Night Elf, and Undead campaigns. Warcraft III: Reforged (2020) acts as a graphical remaster accompanied with major infrastructural upgrades and many new features.
Already own the classic game(RoC)? Redeem your keys here you get access to Reforged with classic graphics.
2a. Gameplay and Game Modes Warcraft III presents itself as an accessible yet highly dynamic game. Besides the melee mode, there exists many different ways of playing the game - solo or in multiplayer with up to 23 other players. It is a fusion of lore-heavy campaigns, competitive match-based gameplay, a diverse custom game selection, a thriving esports scene, endless modding and artistic possibilities, and more. 2b. Standard or Melee
RANKED MODES: 1v1, 2v2, 3v3, 4v4, and FFA
OBJECTIVE: Gather resources, build a base, train your army, level your hero, and totally destroy the enemy base and army.
SPECIFICS: Balance micro (swift decision making, individual unit control, movement, ability usage, hero exp/items) and macro (resources, buildings, army upkeep, expansion). The high level of competition has led to WC3 becoming a prominent esport that still has a thriving to this day!
CUSTOM GAME TYPES: Genres include hero arenas, campaigns, strategies, RPGs, tower defenses, mini-games, and even the unique shooter or 2D platformer.
SPECIFICS: Popular maps include DotA, Footies, Wintermaul, Legion TD, etc. Thousands more maps can be played competitively, creatively, or casually. The World Editor, WC3's modding tool, has allowed maps to essentially become unique games within the client. It is famous for the creation of DotA which has pioneered MOBA genre.
3. Guides, Tutorials, and FAQ
THE CAMPAIGN TEACHES BEGINNERS THE GAME BETTER THAN ANY GUIDE! THE STORY IS WORTH IT! In addition, the Classic War3 Battle.net site provides explanations and statistics for all the gameplay features and races in the game. The guides below are largely based on introductory concepts relating to each scene, so they are beginner friendly under the assumption that you've already familiarized with the base game. You'll also find more niche and advanced guides if you dig through the websites hosting the provided links. 3a. Competitive Melee and Ladder Guides
There are an endless amount custom game tips and pointers that would suit your needs for each map, whether it be for DotA or your favorite TD. Your best bet is to visit communities that specialize in the custom game you are interested in!
3d. FAQ
Where can I play online? The built in battle.net is the official server excluding China. There are 3rd party servers that are not supported by Blizzard, in which warcraft3 does not support nor condone.
Where/how to Play Reforged? You need to have purchased the game. In the BlizzApp at the WC3 tab you have the Install/Play button.
How do I host? HOSTING IS INSTANT NOW. No port forwarding, no bots (on Reforged).
Is Reforged worth it? That in the end is up to you, we suggest that you look into the maps/modes you would like to play. This post have some comments about events from a veteran player's point of view. Also as previous mentioned if you have the Reign of Chaos you already have access to the Classic(SD) version and if you do buy the Reforged version and don't like it you can easily Refund it here.
How do I find games? You can checkout game lists like: w3maps/w3stats or use the ingame search/filter function ingame (the box where game names are).
What is PTR? The Public Test Realm is similar to a Beta where players can test incoming patches and provide blizzard with feedback. The old PTR had a separate installer but now it's a "drop-down" option beside the main game and server options.
Where can I download the latest patch? Current patches are downloaded automatically through battle.net if you have an official copy. Also see patch history.
Is Blizzard's new ladder done/working yet? At the moment no it's still in the works. However W3Champions is a community made ladder that a lot of players use.
Which realms are more populated? For ladder, the Europe (former) Northrend realm has the highest activity but Americas (former) Azeroth & Lordaeron can be more during American times. 1v1 and 4v4 are the most active ladders. Custom game activity is huge and is and can be played on all realms.
Anyone know name of [blank] map? When asking this question, please provide as much information as possible. Things like describing the gameplay, the theme, terrain visuals, and possible names should be considered and described to the best of your ability to increase the chances. Don't forget to check map databases on your own first, though!
Is the community alive? Yes, it is absolutely bustling. See below!
3e. State of the Game FAQ WTii's video Warcraft 3 Reforged ONE YEAR Later... goes over some of these points and makes a number of observations and highlights.
Custom Campaigns? Is not a thing. But you can play them in normal map form, if they were updated.
Player Profiles? Nothing so far. However W3C has them.
Cross-realm hosting? Not at the moment. Was a thing for a patch but was removed with a hotfix again. W3C's ladder is hosted cross-realm but nothing for customs atm, but FLO is in the works that will take on this and a number of other features.
Clans? Nothing yet. However assets for it can be found in the game files. W3C Has both custom made chat-rooms as well as clans.
Ladder? No Blizzard ladder yet. but we have from W3C.
Automated Tournaments? No. Some communities have seasonal things going for both ladder and customs but nothing official yet.
Old BNet Chat System? No and on Europe realm chat do not autoscroll either, is also in the way of the map description but toggle-able. And no kind of chat log with joins or leaves that we had before or timestamp on messages. W3C has made their chats in this "old school" spirit.
Game Reconnection (GProxy)? No. In case of a player leaving disconnecting or crashing or desyncing the game does not inform you either when/if it happened or what the reason was.
Competitive Customs & Ladders? No. However with Community made wc3stats and in the future FLO-host enables this in a number of forms with replay uploading.
Hosting & BNet Commands? Yeah. But they are limited and do not work as they should or you'd wish. For example !ban is just a "long kick" preventing the banned playeuser from rejoining that current lobby not all games you host, thus you can't mange bans and need to black list them yourself.
Campaign Overhaul to fit in with WoW? No. A few missions were reworked and some "new" characters were introduced but not to the scale people wish or expected, for good or ill.
Improved Cutscenes? No. This was aborted and as it looks now wont be a thing at all.
Reforged(HD) Vs Classic (SD)? Well that is up to you. Reforged has a few things in the campaign that Classic don't. Aside from that it would depend on preferences and the maps you want to play as some work better in either version or only in one. Most do use classic and some swap between them so by popular vote Classic(SD) would win as for reasons or factors well most of those are personal.
Follow or Join friends lobbies? Yeah to some degree. if your friend isn't invisible and added correctly via the app or ingame (as you have both gateways in the BlizzApp and the game you can sometimes glitch that) you'll be able to join their game in an empty slot.
When will X be implemented? SoonTN. We do not know at this stage we used to have monthly patches and updates from blizzard but not atm. Some of this can be explained the Bloomberg article.
4. Community Directory
Here you can find communities, websites, social media outlets, and content creators whom have elected to post in our affiliate section on discord. There are few exceptions to communities that are not partnered with us that could be considered essential that have been included. Visit our discord for more information on these communities, or visit them yourself! TIP: USE CTRL+F to search! Terminology: LFG = Looking For Game is a term used for any arranged gaming. Clans are by nature LFG groups, but are generally more specialized and tightly nit. Streamer = Used for most types of Content Creators. 4a. Melee, Ladder, and Esports
What better way to welcome southern Spring/northern Autumn than with a MAME release? MAME 0.189 brings general improvements across a broad range of areas:
The -sleep and -refreshspeed options have been fixed (MAME will no longer use 100% of a CPU core for the least demanding systems).
UI translations have been updated – Chinese, German and Greek are fully up-to-date.
Many layout and navigation bugs in the system/software selection menus have been fixed.
Slot card BIOS selection has been fixed.
Performance of machines that make heavy use of the output/artwork system has been substantially improved.
Support for many more PNG features has been added.
A number of issues with XML system/device output have been addressed.
We are aware of the ongoing issues with the options system. If this completely breaks your use case, all we can recommend at this point is to keep using MAME 0.187 until the issues are resolved. MAME 0.189 adds support for several systems that many of us won’t have had an opportunity to experience in real life. Possibly most interesting is the China Educational Computer I, an Apple II clone with more memory, Chinese language support (pinyin input), and a built-in Logo interpreter. Another interesting addition is the German Kontron PSI98, a Z80-based computer with fairly advanced features. Support for the BBC Micro Tube interface has been added, allowing the use of add-on coprocessor modules and by extension the software that takes advantage of them. On the arcade side, the protection code/data for Gaelco’s TH Strikes Back has been dumped and the game now works. The microcontrollers for Toaplan’s Ghox and Whoopee have been dumped, adding sound to both games and fixing graphical issues in Ghox. The elusive world release DoDonPachi III has been dumped and added. Gaelco’s Football Power is also working in this release. Handheld LCD game additions have slowed down, but MAME 0.189 adds support for three Konami games: Garfield, Football Power, and Bayou Billy. Quite a few Mephisto modular chess computers are now working. MAME 0.189 adds support for a whole lot of newly dumped alternate versions, bootlegs and hacks of arcade titles, and the usual assortment of fixes, improvements, and code modernisations. You can get the source/Windows binaries from the download page and try it out.
The Acornsoft Hits Vol.1, The Acornsoft Hits Vol.2, Centre Ville, Chick Chase, The Christmas Adventures of 4-T and his Friends, The Fantastic Adventures of 4-T, First Filer, The Great British Fun Run, Integra Windows 1.00, Look After Yourself!, Knitwear Designer, Modem Master, Note Invaders, Numbers and Pictures, NumbersCope, Pirate, The Quill (A00), The Quill (A03), Rhythm Maker, Science - Start Here!, Shape Up, Snapple Hopper, Spell!, Starspell Plus, TimeShare, Trivial Pursuit - Baby Boomer Edition, Trivial Pursuit - Genus Edition, Trivial Pursuit - Young Players Edition, Word Skill [Nigel Barnes]
BeebSID 1-17, Beeb SID Quiz [PitfallJones]
bbcm_flop:
Morley Hard Disc Utilities v3.00 [Nigel Barnes]
SID Music 1, Sid Music 2 [Tom Walker]
c64_cass: Shado BBC Emulator Software [Curt Coder]
electron_flop: Electron User Group #00-#74 (5.25"), Starspell Dictionary Disk (3.5"), Starspell Dictionary Disk (5.25") [Nigel Barnes]
fmtowns_cd:
DOR Special Edition '93 (alt), Gokko Vol. 03 - Etcetera [r09, redump.org]
Europa Sensen, Inindou - Datou Nobunaga, Nobunaga no Yabou - Bushou Fuunroku [r09, Reuental]
Nihon Mukashibanashi, The Queen of Duellist Gaiden Alpha Light [r09, yukin/Tokugawa Corporate Forums]
B.A.T. II, Wing Commander, Wing Commander: The Secret Missions, Wing Commander: The Secret Missions 2, Wing Commander II - Vengeance of the Kilrathi [ArcadeShadow]
RobotC2 Demo [breiztiger]
Diagnostics Diskette for IBM Personal System/2 model 70/80 (v1.06, Finnish). [Curt Coder]
Ami [Justin Kerk]
lynx: Crystal Mines II - Buried Treasure (Euro, USA) [anonymous]
pico: Anpanman Pico Wakuwaku Pan Koujou (Jpn), Ett År med Nalle Puh (Swe) [TeamEurope, The Dumping Union]
sms: Alex Kidd in Miracle World 2 (World, hack) [Shideravan]
Software list items promoted to working
bbc_flop_6502: 6502 Development Package, Bitstik Graphics System, Bitstik 2, Econet Level 2 Fileserver Software, Hi-InterSheet, Hi-View, Hi-Wordwise Plus [Nigel Barnes]
bbc_flop_65c102: 65C102 Co-Processor Support Disc [Nigel Barnes]
bbc_flop_68000: Casper Support Discs [Nigel Barnes]
bbc_flop_80186: BBC Master 512 System Discs, Dabs Shareware Vol.1, Dabs Shareware Vol.2 [Nigel Barnes]
bbc_flop_z80: Acorn CP/M System Discs, Acorn CP/M Program Discs, Colossal Cave [Nigel Barnes]
New NOT_WORKING software list additions
pico: Lejonkungen Äventyr (Swe) [TeamEurope, The Dumping Union]
Added support for layout item groups that can be reused in other groups or views.
Reduced weight of render.h by moving component specialisation declarations into rendlay.cpp.
Replaced simple_list with more appropriate containers, remove misleading const qualifiers, reduced repeated XML walking.
Added N-dimensional output finder to avoid runtime string hashes - more than doubles performance of intlc440.
Unified code for copying PNG data into MAME bitmap in MAME and pngcmp, made it less likely to leak memory.
Added support for Adam7 interleave in PNG files, fixed some corner cases in unfiltering code.
Fixed upsampling of greyscale PNGs, added support for monochrome with alpha.
Added support for 16-bit samples in PNG files.
Added support for PNG greyscale/RGB with transparent pen.
Detect more invalid PNG files rather than just behaving badly.
Added "minimaws" scripts, a reference -listxml consumer (implemented with Python/WSGI and JavaScript): [Vas Crabb]
Provides verbs for loading data, some basic batch queries, and an interactive web server mode.
Serves linked HTML pages for machines, devices, and source files.
Demonstrates how to dynamically discover slot/BIOS options from static -listxml output.
Allows user to build a slot configuration and shows necessary command-line arguments or INI lines to produce it in MAME.
As a side effect, this provides additional validation of -listxml output, several issues and limitations were addressed.
Fixed -sleep and -refreshspeed options, fixed a stupid forced unnecessary sleep. [Vas Crabb]
Fixed -slot card,bios=rev (selected BIOS was being applied to slot itself, not card). [Vas Crabb]
Fixed up input merger: added more variants, synchronisation and save state support, removed dubious reset behaviour. [Vas Crabb]
Removed a whole lot of I64 from format strings (use logerrostring_format/stream_format to avoid it). [Vas Crabb]
Added validation of BIOS names/descriptions/defaults and fixed errors exposed. [Vas Crabb]
Moved additional content for release archive from build repository to main repository. [Vas Crabb]
bublbobl.cpp, missb2.cpp: Reimplemented sound CPU semaphores and sound NMI according to schematics. [Lord Nightmare, Vas Crabb]
Implemented sound semaphores into tokio as well, fixing SOUND ERROR in test mode.
Added notes about sound CPU addressing.
Reimplemented /SRESET as a separate function called on sound CPU reset according to schematics.
Added correct watchdog to Bubble Bobble and Tokio, and disabled it on the Bubble Bobble prototype.
Added proper 'wired-or' sound CPU IRQs to Bubble Bobble.
Renamed 'slave' cpu to 'subcpu' to match schematics.
dectalk.cpp: Use correct DSP ROM for firmware 1.8, some driver cleanup. [Lord Nightmare]
ceci: Added driver for China Education Computer I (Apple II clone). [R. Belmont]
Added QUIT and TEST keys (hold down TEST while resetting for diagnostic), completed keyboard.
Fixed banking - Chinese mode works.
Added HGR color killer softswitch.
k2000: Added sample ROMs. [R. Belmont]
alphatro_flop: Replaced bad dumps for CP/M and BASIC with good ones. [R. Belmont]
alphatro: Added cart slot, support for 8K carts from the command line, and cart software list. [R. Belmont]
alphatro: Added BIOS set for machine with Bicom graphics. [TeamEurope, rfka01, R. Belmont]
multipcm: Confirmed to be Yamaha YMW-258-F. [any, R. Belmont]
Added new 74LS259/9334/CD4099 devices. [AJR]
Added wcoin counters and/or lockouts to Atari System 1 games, Basketball, Gauntlet, Gyruss, Hana Yayoi, Hole Land, Jr. Pac-Man, Mahjong Sisters, Pooyan, Roc'n Rope, Squash, Thunder Hoop, Time Limit, Time Pilot '84 and many others.
Cleaned up coin counter behavior in Sauro and Rally Bike.
tankbatt: Improved handling of sample triggers - fire sound is no longer doubled. [AJR]
decocass.cpp: Major improvements to colors and graphics layer priorities [AJR]
Implement the PRI2 pen modification effect. This makes the tunnels and headlight in Highway Chase look much more accurate, and makes some color changes work in Astro Fantasia.
Shadow color in Skater is now properly black (not a pen modification effect).
Correct background fill color, making high score screen in Super Doubles Tennis properly blue.
What better way to welcome southern Spring/northern Autumn than with a MAME release? MAME 0.189 brings general improvements across a broad range of areas:
The -sleep and -refreshspeed options have been fixed (MAME will no longer use 100% of a CPU core for the least demanding systems).
UI translations have been updated – Chinese, German and Greek are fully up-to-date.
Many layout and navigation bugs in the system/software selection menus have been fixed.
Slot card BIOS selection has been fixed.
Performance of machines that make heavy use of the output/artwork system has been substantially improved.
Support for many more PNG features has been added.
A number of issues with XML system/device output have been addressed.
We are aware of the ongoing issues with the options system. If this completely breaks your use case, all we can recommend at this point is to keep using MAME 0.187 until the issues are resolved. MAME 0.189 adds support for several systems that many of us won’t have had an opportunity to experience in real life. Possibly most interesting is the China Educational Computer I, an Apple II clone with more memory, Chinese language support (pinyin input), and a built-in Logo interpreter. Another interesting addition is the German Kontron PSI98, a Z80-based computer with fairly advanced features. Support for the BBC Micro Tube interface has been added, allowing the use of add-on coprocessor modules and by extension the software that takes advantage of them. On the arcade side, the protection code/data for Gaelco’s TH Strikes Back has been dumped and the game now works. The microcontrollers for Toaplan’s Ghox and Whoopee have been dumped, adding sound to both games and fixing graphical issues in Ghox. The elusive world release DoDonPachi III has been dumped and added. Gaelco’s Football Power is also working in this release. Handheld LCD game additions have slowed down, but MAME 0.189 adds support for three Konami games: Garfield, Football Power, and Bayou Billy. Quite a few Mephisto modular chess computers are now working. MAME 0.189 adds support for a whole lot of newly dumped alternate versions, bootlegs and hacks of arcade titles, and the usual assortment of fixes, improvements, and code modernisations. You can get the source/Windows binaries from the download page and try it out.
The Acornsoft Hits Vol.1, The Acornsoft Hits Vol.2, Centre Ville, Chick Chase, The Christmas Adventures of 4-T and his Friends, The Fantastic Adventures of 4-T, First Filer, The Great British Fun Run, Integra Windows 1.00, Look After Yourself!, Knitwear Designer, Modem Master, Note Invaders, Numbers and Pictures, NumbersCope, Pirate, The Quill (A00), The Quill (A03), Rhythm Maker, Science - Start Here!, Shape Up, Snapple Hopper, Spell!, Starspell Plus, TimeShare, Trivial Pursuit - Baby Boomer Edition, Trivial Pursuit - Genus Edition, Trivial Pursuit - Young Players Edition, Word Skill [Nigel Barnes]
BeebSID 1-17, Beeb SID Quiz [PitfallJones]
bbcm_flop:
Morley Hard Disc Utilities v3.00 [Nigel Barnes]
SID Music 1, Sid Music 2 [Tom Walker]
c64_cass: Shado BBC Emulator Software [Curt Coder]
electron_flop: Electron User Group #00-#74 (5.25"), Starspell Dictionary Disk (3.5"), Starspell Dictionary Disk (5.25") [Nigel Barnes]
fmtowns_cd:
DOR Special Edition '93 (alt), Gokko Vol. 03 - Etcetera [r09, redump.org]
Europa Sensen, Inindou - Datou Nobunaga, Nobunaga no Yabou - Bushou Fuunroku [r09, Reuental]
Nihon Mukashibanashi, The Queen of Duellist Gaiden Alpha Light [r09, yukin/Tokugawa Corporate Forums]
B.A.T. II, Wing Commander, Wing Commander: The Secret Missions, Wing Commander: The Secret Missions 2, Wing Commander II - Vengeance of the Kilrathi [ArcadeShadow]
RobotC2 Demo [breiztiger]
Diagnostics Diskette for IBM Personal System/2 model 70/80 (v1.06, Finnish). [Curt Coder]
Ami [Justin Kerk]
lynx: Crystal Mines II - Buried Treasure (Euro, USA) [anonymous]
pico: Anpanman Pico Wakuwaku Pan Koujou (Jpn), Ett År med Nalle Puh (Swe) [TeamEurope, The Dumping Union]
sms: Alex Kidd in Miracle World 2 (World, hack) [Shideravan]
Software list items promoted to working
bbc_flop_6502: 6502 Development Package, Bitstik Graphics System, Bitstik 2, Econet Level 2 Fileserver Software, Hi-InterSheet, Hi-View, Hi-Wordwise Plus [Nigel Barnes]
bbc_flop_65c102: 65C102 Co-Processor Support Disc [Nigel Barnes]
bbc_flop_68000: Casper Support Discs [Nigel Barnes]
bbc_flop_80186: BBC Master 512 System Discs, Dabs Shareware Vol.1, Dabs Shareware Vol.2 [Nigel Barnes]
bbc_flop_z80: Acorn CP/M System Discs, Acorn CP/M Program Discs, Colossal Cave [Nigel Barnes]
New NOT_WORKING software list additions
pico: Lejonkungen Äventyr (Swe) [TeamEurope, The Dumping Union]
Added support for layout item groups that can be reused in other groups or views.
Reduced weight of render.h by moving component specialisation declarations into rendlay.cpp.
Replaced simple_list with more appropriate containers, remove misleading const qualifiers, reduced repeated XML walking.
Added N-dimensional output finder to avoid runtime string hashes - more than doubles performance of intlc440.
Unified code for copying PNG data into MAME bitmap in MAME and pngcmp, made it less likely to leak memory.
Added support for Adam7 interleave in PNG files, fixed some corner cases in unfiltering code.
Fixed upsampling of greyscale PNGs, added support for monochrome with alpha.
Added support for 16-bit samples in PNG files.
Added support for PNG greyscale/RGB with transparent pen.
Detect more invalid PNG files rather than just behaving badly.
Added "minimaws" scripts, a reference -listxml consumer (implemented with Python/WSGI and JavaScript): [Vas Crabb]
Provides verbs for loading data, some basic batch queries, and an interactive web server mode.
Serves linked HTML pages for machines, devices, and source files.
Demonstrates how to dynamically discover slot/BIOS options from static -listxml output.
Allows user to build a slot configuration and shows necessary command-line arguments or INI lines to produce it in MAME.
As a side effect, this provides additional validation of -listxml output, several issues and limitations were addressed.
Fixed -sleep and -refreshspeed options, fixed a stupid forced unnecessary sleep. [Vas Crabb]
Fixed -slot card,bios=rev (selected BIOS was being applied to slot itself, not card). [Vas Crabb]
Fixed up input merger: added more variants, synchronisation and save state support, removed dubious reset behaviour. [Vas Crabb]
Removed a whole lot of I64 from format strings (use logerrostring_format/stream_format to avoid it). [Vas Crabb]
Added validation of BIOS names/descriptions/defaults and fixed errors exposed. [Vas Crabb]
Moved additional content for release archive from build repository to main repository. [Vas Crabb]
bublbobl.cpp, missb2.cpp: Reimplemented sound CPU semaphores and sound NMI according to schematics. [Lord Nightmare, Vas Crabb]
Implemented sound semaphores into tokio as well, fixing SOUND ERROR in test mode.
Added notes about sound CPU addressing.
Reimplemented /SRESET as a separate function called on sound CPU reset according to schematics.
Added correct watchdog to Bubble Bobble and Tokio, and disabled it on the Bubble Bobble prototype.
Added proper 'wired-or' sound CPU IRQs to Bubble Bobble.
Renamed 'slave' cpu to 'subcpu' to match schematics.
dectalk.cpp: Use correct DSP ROM for firmware 1.8, some driver cleanup. [Lord Nightmare]
ceci: Added driver for China Education Computer I (Apple II clone). [R. Belmont]
Added QUIT and TEST keys (hold down TEST while resetting for diagnostic), completed keyboard.
Fixed banking - Chinese mode works.
Added HGR color killer softswitch.
k2000: Added sample ROMs. [R. Belmont]
alphatro_flop: Replaced bad dumps for CP/M and BASIC with good ones. [R. Belmont]
alphatro: Added cart slot, support for 8K carts from the command line, and cart software list. [R. Belmont]
alphatro: Added BIOS set for machine with Bicom graphics. [TeamEurope, rfka01, R. Belmont]
multipcm: Confirmed to be Yamaha YMW-258-F. [any, R. Belmont]
Added new 74LS259/9334/CD4099 devices. [AJR]
Added wcoin counters and/or lockouts to Atari System 1 games, Basketball, Gauntlet, Gyruss, Hana Yayoi, Hole Land, Jr. Pac-Man, Mahjong Sisters, Pooyan, Roc'n Rope, Squash, Thunder Hoop, Time Limit, Time Pilot '84 and many others.
Cleaned up coin counter behavior in Sauro and Rally Bike.
tankbatt: Improved handling of sample triggers - fire sound is no longer doubled. [AJR]
decocass.cpp: Major improvements to colors and graphics layer priorities [AJR]
Implement the PRI2 pen modification effect. This makes the tunnels and headlight in Highway Chase look much more accurate, and makes some color changes work in Astro Fantasia.
Shadow color in Skater is now properly black (not a pen modification effect).
Correct background fill color, making high score screen in Super Doubles Tennis properly blue.
What better way to welcome southern Spring/northern Autumn than with a MAME release? MAME 0.189 brings general improvements across a broad range of areas:
The -sleep and -refreshspeed options have been fixed (MAME will no longer use 100% of a CPU core for the least demanding systems).
UI translations have been updated – Chinese, German and Greek are fully up-to-date.
Many layout and navigation bugs in the system/software selection menus have been fixed.
Slot card BIOS selection has been fixed.
Performance of machines that make heavy use of the output/artwork system has been substantially improved.
Support for many more PNG features has been added.
A number of issues with XML system/device output have been addressed.
We are aware of the ongoing issues with the options system. If this completely breaks your use case, all we can recommend at this point is to keep using MAME 0.187 until the issues are resolved. MAME 0.189 adds support for several systems that many of us won’t have had an opportunity to experience in real life. Possibly most interesting is the China Educational Computer I, an Apple II clone with more memory, Chinese language support (pinyin input), and a built-in Logo interpreter. Another interesting addition is the German Kontron PSI98, a Z80-based computer with fairly advanced features. Support for the BBC Micro Tube interface has been added, allowing the use of add-on coprocessor modules and by extension the software that takes advantage of them. On the arcade side, the protection code/data for Gaelco’s TH Strikes Back has been dumped and the game now works. The microcontrollers for Toaplan’s Ghox and Whoopee have been dumped, adding sound to both games and fixing graphical issues in Ghox. The elusive world release DoDonPachi III has been dumped and added. Gaelco’s Football Power is also working in this release. Handheld LCD game additions have slowed down, but MAME 0.189 adds support for three Konami games: Garfield, Football Power, and Bayou Billy. Quite a few Mephisto modular chess computers are now working. MAME 0.189 adds support for a whole lot of newly dumped alternate versions, bootlegs and hacks of arcade titles, and the usual assortment of fixes, improvements, and code modernisations. You can get the source/Windows binaries from the download page and try it out.
The Acornsoft Hits Vol.1, The Acornsoft Hits Vol.2, Centre Ville, Chick Chase, The Christmas Adventures of 4-T and his Friends, The Fantastic Adventures of 4-T, First Filer, The Great British Fun Run, Integra Windows 1.00, Look After Yourself!, Knitwear Designer, Modem Master, Note Invaders, Numbers and Pictures, NumbersCope, Pirate, The Quill (A00), The Quill (A03), Rhythm Maker, Science - Start Here!, Shape Up, Snapple Hopper, Spell!, Starspell Plus, TimeShare, Trivial Pursuit - Baby Boomer Edition, Trivial Pursuit - Genus Edition, Trivial Pursuit - Young Players Edition, Word Skill [Nigel Barnes]
BeebSID 1-17, Beeb SID Quiz [PitfallJones]
bbcm_flop:
Morley Hard Disc Utilities v3.00 [Nigel Barnes]
SID Music 1, Sid Music 2 [Tom Walker]
c64_cass: Shado BBC Emulator Software [Curt Coder]
electron_flop: Electron User Group #00-#74 (5.25"), Starspell Dictionary Disk (3.5"), Starspell Dictionary Disk (5.25") [Nigel Barnes]
fmtowns_cd:
DOR Special Edition '93 (alt), Gokko Vol. 03 - Etcetera [r09, redump.org]
Europa Sensen, Inindou - Datou Nobunaga, Nobunaga no Yabou - Bushou Fuunroku [r09, Reuental]
Nihon Mukashibanashi, The Queen of Duellist Gaiden Alpha Light [r09, yukin/Tokugawa Corporate Forums]
B.A.T. II, Wing Commander, Wing Commander: The Secret Missions, Wing Commander: The Secret Missions 2, Wing Commander II - Vengeance of the Kilrathi [ArcadeShadow]
RobotC2 Demo [breiztiger]
Diagnostics Diskette for IBM Personal System/2 model 70/80 (v1.06, Finnish). [Curt Coder]
Ami [Justin Kerk]
lynx: Crystal Mines II - Buried Treasure (Euro, USA) [anonymous]
pico: Anpanman Pico Wakuwaku Pan Koujou (Jpn), Ett År med Nalle Puh (Swe) [TeamEurope, The Dumping Union]
sms: Alex Kidd in Miracle World 2 (World, hack) [Shideravan]
Software list items promoted to working
bbc_flop_6502: 6502 Development Package, Bitstik Graphics System, Bitstik 2, Econet Level 2 Fileserver Software, Hi-InterSheet, Hi-View, Hi-Wordwise Plus [Nigel Barnes]
bbc_flop_65c102: 65C102 Co-Processor Support Disc [Nigel Barnes]
bbc_flop_68000: Casper Support Discs [Nigel Barnes]
bbc_flop_80186: BBC Master 512 System Discs, Dabs Shareware Vol.1, Dabs Shareware Vol.2 [Nigel Barnes]
bbc_flop_z80: Acorn CP/M System Discs, Acorn CP/M Program Discs, Colossal Cave [Nigel Barnes]
New NOT_WORKING software list additions
pico: Lejonkungen Äventyr (Swe) [TeamEurope, The Dumping Union]
Added support for layout item groups that can be reused in other groups or views.
Reduced weight of render.h by moving component specialisation declarations into rendlay.cpp.
Replaced simple_list with more appropriate containers, remove misleading const qualifiers, reduced repeated XML walking.
Added N-dimensional output finder to avoid runtime string hashes - more than doubles performance of intlc440.
Unified code for copying PNG data into MAME bitmap in MAME and pngcmp, made it less likely to leak memory.
Added support for Adam7 interleave in PNG files, fixed some corner cases in unfiltering code.
Fixed upsampling of greyscale PNGs, added support for monochrome with alpha.
Added support for 16-bit samples in PNG files.
Added support for PNG greyscale/RGB with transparent pen.
Detect more invalid PNG files rather than just behaving badly.
Added "minimaws" scripts, a reference -listxml consumer (implemented with Python/WSGI and JavaScript): [Vas Crabb]
Provides verbs for loading data, some basic batch queries, and an interactive web server mode.
Serves linked HTML pages for machines, devices, and source files.
Demonstrates how to dynamically discover slot/BIOS options from static -listxml output.
Allows user to build a slot configuration and shows necessary command-line arguments or INI lines to produce it in MAME.
As a side effect, this provides additional validation of -listxml output, several issues and limitations were addressed.
Fixed -sleep and -refreshspeed options, fixed a stupid forced unnecessary sleep. [Vas Crabb]
Fixed -slot card,bios=rev (selected BIOS was being applied to slot itself, not card). [Vas Crabb]
Fixed up input merger: added more variants, synchronisation and save state support, removed dubious reset behaviour. [Vas Crabb]
Removed a whole lot of I64 from format strings (use logerrostring_format/stream_format to avoid it). [Vas Crabb]
Added validation of BIOS names/descriptions/defaults and fixed errors exposed. [Vas Crabb]
Moved additional content for release archive from build repository to main repository. [Vas Crabb]
bublbobl.cpp, missb2.cpp: Reimplemented sound CPU semaphores and sound NMI according to schematics. [Lord Nightmare, Vas Crabb]
Implemented sound semaphores into tokio as well, fixing SOUND ERROR in test mode.
Added notes about sound CPU addressing.
Reimplemented /SRESET as a separate function called on sound CPU reset according to schematics.
Added correct watchdog to Bubble Bobble and Tokio, and disabled it on the Bubble Bobble prototype.
Added proper 'wired-or' sound CPU IRQs to Bubble Bobble.
Renamed 'slave' cpu to 'subcpu' to match schematics.
dectalk.cpp: Use correct DSP ROM for firmware 1.8, some driver cleanup. [Lord Nightmare]
ceci: Added driver for China Education Computer I (Apple II clone). [R. Belmont]
Added QUIT and TEST keys (hold down TEST while resetting for diagnostic), completed keyboard.
Fixed banking - Chinese mode works.
Added HGR color killer softswitch.
k2000: Added sample ROMs. [R. Belmont]
alphatro_flop: Replaced bad dumps for CP/M and BASIC with good ones. [R. Belmont]
alphatro: Added cart slot, support for 8K carts from the command line, and cart software list. [R. Belmont]
alphatro: Added BIOS set for machine with Bicom graphics. [TeamEurope, rfka01, R. Belmont]
multipcm: Confirmed to be Yamaha YMW-258-F. [any, R. Belmont]
Added new 74LS259/9334/CD4099 devices. [AJR]
Added wcoin counters and/or lockouts to Atari System 1 games, Basketball, Gauntlet, Gyruss, Hana Yayoi, Hole Land, Jr. Pac-Man, Mahjong Sisters, Pooyan, Roc'n Rope, Squash, Thunder Hoop, Time Limit, Time Pilot '84 and many others.
Cleaned up coin counter behavior in Sauro and Rally Bike.
tankbatt: Improved handling of sample triggers - fire sound is no longer doubled. [AJR]
decocass.cpp: Major improvements to colors and graphics layer priorities [AJR]
Implement the PRI2 pen modification effect. This makes the tunnels and headlight in Highway Chase look much more accurate, and makes some color changes work in Astro Fantasia.
Shadow color in Skater is now properly black (not a pen modification effect).
Correct background fill color, making high score screen in Super Doubles Tennis properly blue.
Free download nulled scripts. Download PHP nulled scripts and PHP website clone scripts nulled from codecanyon, themeforest, etc. Download Vizmo – Simple Video Hosting Script Nulled. The latest version released on October 15, 2020 by the author XLScripts 200+ Best Free PHP Scripts Nulled for Download 2020 Nulled PHP Script is a one-stop platform for getting all types of Nulled PHP Scripts, WordPress Themes, WordPress Plugins, PHP Scripts. POPULAR POSTS Universal Video Player v3.4 – WordPress Plugin » Premium Scripts, Plugins & Mobile Free Download Nulled PHP Scripts, Codecanyon Scrripts, Plugins, Themeforest Themes, App Source Code, WordPress Themes, PHP Script Download ... Extendable PHP Point of Sale Nulled Script. Null PHP Script-9 February 2021. 0. Addons. ... Best Documentation and Knowledge Base Solution for... Null PHP Script-1 February 2021. 0. Search engine php script nulled. Search Engine is basically a program or Program inside a website which helps to find you anything from the Internet. Findings / Searching things would be very difficult without any search engine. It basically finds your interests and related keywords from different websites and brings them to you. Download Findhouse – Real Estate Laravel Script Nulled. The latest version released on November 17, 2020 by the author BookingCore 200+ Best Free PHP Scripts Nulled for Download 2020 This is one of best nulled script website to download nulled themeforest themes and codecanyon php scripts nulled and mobile apps nulled. Our premium resources will help you to create a beautiful web and mobile site, and can avoid costly investments of yours. PHP Script – Nulled PHP Scripts Download more than +1500 scripts for free and nulled, cracked scripts with Codecanyon.Download The best Scripts downloads website. HTML TEMPLATES nulled scripts,php scripts,cms cripts,wordpress themes/plugins,php website clone scripts,nulled from codecanyon,themeforest,forum scripts,free scripts. SCRiPTMAFiA.ORG - Download Full Nulled Scripts. CodeCanyon - ChatBot for WooCommerce - Retargeting, Exit Intent, Abandoned Cart, Facebook Live Chat - WoowBot v12.3.7 - 21426656
How to Code a Stock Trading Bot Class 1 of 5 - YouTube
Download the nulled version of latest PlayTube - the ultimate PHP Video CMS v1.7 for free.Check the Script Demo here:https://ouo.io/DXKGSUWatch this Video to... Bus Booking System project is developed using PHP, CSS, Bootstrap, and JavaScript. Talking about the project, it has all the essential features required for ... Best of YouTube Music Sports Gaming Movies TV Shows News Live Fashion ... PHP tutorial for Beginners #3 Run your first php code by Code And Coins. 3:11 . PHP Full Tutorial For Beginners With ... Learn how to run your first PHP program in XAMPP Server. PHP is a server-side scripting language that is used to create dynamic web pages.Subscribe to my ch... In this video I'll show you the quickest way to spy on remotes.Anime Highschool Yen Script:for i=1, 1000 dogame.ReplicatedStorage.ValueChange:FireServer("Yen... Create a custom comment section using PHP - Learn PHP backend programming. Today we will create our own comment section from scratch using PHP.We will create... PHP Tutorial for Beginners - A simple and short PHP tutorial and complete reference manual for all built-in PHP functions. This tutorial is designed for begi... Learn the PHP programming language in this full course / tutorial. The course is designed for new programmers, and will introduce common programming topics u... Attendance Management System Using PHP With Source CodeIn this video I will show you how to Download from Internet and upload in localhost(Xampp) server with... In this first class we talk about how to code a simple trading bot for stocks using moving averages. In the next few classes we will talk about better strate...