Here's what I came up with for the main gameplay for a reimagined Yandere Simulator: A good majority of the gameplay is still there, with some changes. All of the elimination methods are present, but with the matchmaking method, you have the option to matchmake the current rival with a male, female, or non-binary student. Certain clubs will only become available as the weeks go on (i.e- the Cooking Club becoming available on week 2, Drama Club available on week 3, etc.) There will be no SNAP Mode. Some Easter Eggs will remain, but only a certain few. There are no panty shots or lewd photos. The “panty buff” feature will be replaced with “accessory buffs”. Yan-chan will be given the option of different hair clips, hair bows, bracelets, necklaces, etc. These accessories will each give different bonuses. The reputation meter mechanic stays the same, but since there are no panty shots/lewd photos, the “camera” related act of ruining reputation is aiming a camera repeatedly at an NPC. Schemes in the original are really just holding the player’s hand in an already confusing game design. Instead, Yandere-chan can come up with “plans” by listening in on NPC conversations, or through manga or anime. All of the Drops that Info-chan provides in the original game will only be available in the town shops. Yan-chan will be able to interact with Senpai, having friendly conversations with him and giving him gifts. Him damaging the reputation meter only occurs when he catches Yan-chan doing something dangerous in front of him. Planting bugs will be present, somewhat, as they will only be used to find out secrets about the rivals/faculty. If you have any other ideas you want to give me, go for it!
An introduction to Linux through Windows Subsystem for Linux
I'm working as an Undergraduate Learning Assistant and wrote this guide to help out students who were in the same boat I was in when I first took my university's intro to computer science course. It provides an overview of how to get started using Linux, guides you through setting up Windows Subsystem for Linux to run smoothly on Windows 10, and provides a very basic introduction to Linux. Students seemed to dig it, so I figured it'd help some people in here as well. I've never posted here before, so apologies if I'm unknowingly violating subreddit rules.
An introduction to Linux through Windows Subsystem for Linux
tl;dr skip to next section So you're thinking of installing a Linux distribution, and are unsure where to start. Or you're an unfortunate soul using Windows 10 in CPSC 201. Either way, this guide is for you. In this section I'll give a very basic intro to some of options you've got at your disposal, and explain why I chose Windows Subsystem for Linux among them. All of these have plenty of documentation online so Google if in doubt.
Dual-booting with Windows and a Linux distro
Will basically involve partitioning your drive and installing Linux from an external bootable USB through your computer's boot menu. You'll get the full Linux experience.
Lots of Linux flavors to choose from. For beginners, Ubuntu and Linux Mint are generally recommended. I have Ubuntu 18.04 LTS, I'd recommend Ubuntu 20.04 LTS since it's newer, but it's all up to you.
However, it can be a pain to constantly be switching between operating systems. Maybe you wanna make the full jump to Linux, maybe you don't.
Life pro tip: if you go down this route, disable Window 10's Fast Startup feature as it will get very screwy with a dual-boot. I've also included a helpful guide in Appendix B.
Using a virtual machine (VM) to run Linux
Involves downloading a VM, downloading a .iso image file of whatever operating system you'd like, and running on your local machine.
Devours RAM and is generally pretty slow, would not recommend.
Using terminal emulators
These provide commands and functionality similar to a Linux terminal, but are still running on Windows architecture.
These days, the most commonly-used Linux terminal is called bash. bash stands for Bourne Again Shell (no, Bourne is not a typo), and is likely what you'll be using as well.
Terminal emulators generally don't include a package manager, i.e. you can't download new bash programs, so pretty limited for general usage. BUT you can install a package manager externally, kind of hacky but can work.
Examples of terminal emulators include PuTTY, Git Bash, msys2 and mingw.
Using Windows Subsystem for Linux (either WSL 1 or WSL 2)
WSL provides a compatibility layer for running GNU/Linux programs natively on Windows 10. It has integration features certain Windows 10 development apps (notably Visual Studio Code) as well.
You've got two options, WSL 1 and WSL 2. WSL 2 was recently released and features a real Linux kernel, as opposed to an simulated kernel in WSL. This means WSL 2 offers significant performance advantages, but still lacks some of WSL 1's features.
WSL 1 is what I currently use, and thus what I'll be talking about in this guide. I'm not necessarily recommending it, frankly I regret not doing a dual-boot sooner and ditching Windows, but a dual-boot isn't for everyone and takes a lot of time you might not have right now.
Getting WSL initially setup is easy, but making it run smoothly requires some effort, and some features (like audio playback or displaying GUIs) require workarounds you can research if interested. WSL will also not work properly with low-level system tools.
With that out of the way, let's get started with setting up WSL 1 on your Windows 10 machine.
Setting up WSL
So if you've read this far I've convinced you to use WSL. Let's get started with setting it up. The very basics are outlined in Microsoft's guide here, I'll be covering what they talk about and diving into some other stuff.
1. Installing WSL
Press the Windows key (henceforth Winkey) and type in PowerShell. Right-click the icon and select run as administrator. Next, paste in this command:
Now you'll want to perform a hard shutdown on your computer. This can become unecessarily complicated because of Window's fast startup feature, but here we go. First try pressing the Winkey, clicking on the power icon, and selecting Shut Down while holding down the shift key. Let go of the shift key and the mouse, and let it shutdown. Great! Now open up Command Prompt and type in
wsl --help
If you get a large text output, WSL has been successfully enabled on your machine. If nothing happens, your computer failed at performing a hard shutdown, in which case you can try the age-old technique of just holding down your computer's power button until the computer turns itself off. Make sure you don't have any unsaved documents open when you do this.
2. Installing Ubuntu
Great! Now that you've got WSL installed, let's download a Linux distro. Press the Winkey and type in Microsoft Store. Now use the store's search icon and type in Ubuntu. Ubuntu is a Debian-based Linux distribution, and seems to have the best integration with WSL, so that's what we'll be going for. If you want to be quirky, here are some other options. Once you type in Ubuntu three options should pop up: Ubuntu, Ubuntu 20.04 LTS, and Ubuntu 18.04 LTS.  Installing plain-old "Ubuntu" will mean the app updates whenever a new major Ubuntu distribution is released. The current version (as of 09/02/2020) is Ubuntu 20.04.1 LTS. The other two are older distributions of Ubuntu. For most use-cases, i.e. unless you're running some software that will break when upgrading, you'll want to pick the regular Ubuntu option. That's what I did. Once that's done installing, again hit Winkey and open up Ubuntu. A console window should open up, asking you to wait a minute or two for files to de-compress and be stored on your PC. All future launches should take less than a second. It'll then prompt you to create a username and password. I'd recommend sticking to whatever your Windows username and password is so that you don't have to juggle around two different usepassword combinations, but up to you. Finally, to upgrade all your packages, type in
sudo apt-get update
And then
sudo apt-get upgrade
apt-get is the Ubuntu package manager, this is what you'll be using to install additional programs on WSL.
3. Making things nice and crispy: an introduction to UNIX-based filesystems
tl;dr skip to the next section The two above steps are technically all you need for running WSL on your system. However, you may notice that whenever you open up the Ubuntu app your current folder seems to be completely random. If you type in pwd (for Print Working Directory, 'directory' is synonymous with 'folder') inside Ubuntu and hit enter, you'll likely get some output akin to /home/. Where is this folder? Is it my home folder? Type in ls (for LiSt) to see what files are in this folder. Probably you won't get any output, because surprise surprise this folder is not your Windows home folder and is in fact empty (okay it's actually not empty, which we'll see in a bit. If you type in ls -a, a for All, you'll see other files but notice they have a period in front of them. This is a convention for specifying files that should be hidden by default, and ls, as well as most other commands, will honor this convention. Anyways). So where is my Windows home folder? Is WSL completely separate from Windows? Nope! This is Windows Subsystem for Linux after all. Notice how, when you typed pwd earlier, the address you got was /home/. Notice that forward-slash right before home. That forward-slash indicates the root directory (not to be confused with the /root directory), which is the directory at the top of the directory hierarchy and contains all other directories in your system. So if we type ls /, you'll see what are the top-most directories in your system. Okay, great. They have a bunch of seemingly random names. Except, shocker, they aren't random. I've provided a quick run-down in Appendix A. For now, though, we'll focus on /mnt, which stands for mount. This is where your C drive, which contains all your Windows stuff, is mounted. So if you type ls /mnt/c, you'll begin to notice some familiar folders. Type in ls /mnt/c/Users, and voilà, there's your Windows home folder. Remember this filepath, /mnt/c/Users/. When we open up Ubuntu, we don't want it tossing us in this random /home/ directory, we want our Windows home folder. Let's change that!
4. Changing your default home folder
Type in sudo vim /etc/passwd. You'll likely be prompted for your Ubuntu's password. sudo is a command that gives you root privileges in bash (akin to Windows's right-click then selecting 'Run as administrator'). vim is a command-line text-editing tool, which out-of-the-box functions kind of like a crummy Notepad (you can customize it infinitely though, and some people have insane vim setups. Appendix B has more info). /etc/passwd is a plaintext file that historically was used to store passwords back when encryption wasn't a big deal, but now instead stores essential user info used every time you open up WSL. Anyway, once you've typed that in, your shell should look something like this:  Using arrow-keys, find the entry that begins with your Ubuntu username. It should be towards the bottom of the file. In my case, the line looks like
See that cringy, crummy /home/pizzatron3000? Not only do I regret that username to this day, it's also not where we want our home directory. Let's change that! Press i to initiate vim's -- INSERT -- mode. Use arrow-keys to navigate to that section, and delete /home/ by holding down backspace. Remember that filepath I asked you to remember? /mnt/c/Users/. Type that in. For me, the line now looks like
Next, press esc to exit insert mode, then type in the following:
:wq
The : tells vim you're inputting a command, w means write, and q means quit. If you've screwed up any of the above sections, you can also type in :q! to exit vim without saving the file. Just remember to exit insert mode by pressing esc before inputting commands, else you'll instead be writing to the file. Great! If you now open up a new terminal and type in pwd, you should be in your Window's home folder! However, things seem to be lacking their usual color...
5. Importing your configuration files into the new home directory
Your home folder contains all your Ubuntu and bash configuration files. However, since we just changed the home folder to your Window's home folder, we've lost these configuration files. Let's bring them back! These configuration files are hidden inside /home/, and they all start with a . in front of the filename. So let's copy them over into your new home directory! Type in the following:
cp -r /home//. ~
cp stands for CoPy, -r stands for recursive (i.e. descend into directories), the . at the end is cp-specific syntax that lets it copy anything, including hidden files, and the ~ is a quick way of writing your home directory's filepath (which would be /mnt/c/Users/) without having to type all that in again. Once you've run this, all your configuration files should now be present in your new home directory. Configuration files like .bashrc, .profile, and .bash_profile essentially provide commands that are run whenever you open a new shell. So now, if you open a new shell, everything should be working normally. Amazing. We're done!
6. Tips & tricks
Here are two handy commands you can add to your .profile file. Run vim ~/.profile, then, type these in at the top of the .profile file, one per line, using the commands we discussed previously (i to enter insert mode, esc to exit insert mode, :wq to save and quit). alias rm='rm -i' makes it so that the rm command will always ask for confirmation when you're deleting a file. rm, for ReMove, is like a Windows delete except literally permanent and you will lose that data for good, so it's nice to have this extra safeguard. You can type rm -f to bypass. Linux can be super powerful, but with great power comes great responsibility. NEVER NEVER NEVER type in rm -rf /, this is saying 'delete literally everything and don't ask for confirmation', your computer will die. Newer versions of rm fail when you type this in, but don't push your luck. You've been warned. Be careful. export DISPLAY=:0 if you install XLaunch VcXsrv, this line allows you to open graphical interfaces through Ubuntu. The export sets the environment variable DISPLAY, and the :0 tells Ubuntu that it should use the localhost display.
Appendix A: brief intro to top-level UNIX directories
tl;dr only mess with /mnt, /home, and maybe maybe /usr. Don't touch anything else.
bin: binaries, contains Ubuntu binary (aka executable) files that are used in bash. Here you'll find the binaries that execute commands like ls and pwd. Similar to /usbin, but bin gets loaded earlier in the booting process so it contains the most important commands.
boot: contains information for operating system booting. Empty in WSL, because WSL isn't an operating system.
dev: devices, provides files that allow Ubuntu to communicate with I/O devices. One useful file here is /dev/null, which is basically an information black hole that automatically deletes any data you pass it.
etc: no idea why it's called etc, but it contains system-wide configuration files
home: equivalent to Window's C:/Users folder, contains home folders for the different users. In an Ubuntu system, under /home/ you'd find the Documents folder, Downloads folder, etc.
lib: libraries used by the system
lib64 64-bit libraries used by the system
mnt: mount, where your drives are located
opt: third-party applications that (usually) don't have any dependencies outside the scope of their own package
proc: process information, contains runtime information about your system (e.g. memory, mounted devices, hardware configurations, etc)
run: directory for programs to store runtime information.
srv: server folder, holds data to be served in protocols like ftp, www, cvs, and others
sys: system, provides information about different I/O devices to the Linux Kernel. If dev files allows you to access I/O devices, sys files tells you information about these devices.
tmp: temporary, these are system runtime files that are (in most Linux distros) cleared out after every reboot. It's also sort of deprecated for security reasons, and programs will generally prefer to use run.
usr: contains additional UNIX commands, header files for compiling C programs, among other things. Kind of like bin but for less important programs. Most of everything you install using apt-get ends up here.
var: variable, contains variable data such as logs, databases, e-mail etc, but that persist across different boots.
Also keep in mind that all of this is just convention. No Linux distribution needs to follow this file structure, and in fact almost all will deviate from what I just described. Hell, you could make your own Linux fork where /mnt/c information is stored in tmp.
MAME 0.223 has finally arrived, and what a release it is – there’s definitely something for everyone! Starting with some of the more esoteric additions, Linus Åkesson’s AVR-based hardware chiptune project and Power Ninja Action Challenge demos are now supported. These demos use minimal hardware to generate sound and/or video, relying on precise CPU timings to work. With this release, every hand-held LCD game from Nintendo’s Game & Watch and related lines is supported in MAME, with Donkey Kong Hockey bringing up the rear. Also of note is the Bassmate Computer fishing aid, made by Nintendo and marketed by Telko and other companies, which is clearly based on the dual-screen Game & Watch design. The steady stream of TV games hasn’t stopped, with a number of French releases from Conny/VideoJet among this month’s batch. For the first time ever, games running on the Barcrest MPU4 video system are emulated well enough to be playable. Titles that are now working include several games based on the popular British TV game show The Crystal Maze, Adders and Ladders, The Mating Game, and Prize Tetris. In a clear win for MAME’s modular architecture, the breakthrough came through the discovery of a significant flaw in our Motorola MC6840 Programmable Timer Module emulation that was causing issues for the Fairlight CMI IIx synthesiser. In the same manner, the Busicom 141-PF desk calculator is now working, thanks to improvements made to Intel 4004 CPU emulation that came out of emulating the INTELLEC 4 development system and the prototype 4004-based controller board for Flicker pinball. The Busicom 141-PF is historically significant, being the first application of Intel’s first microprocessor. Fans of classic vector arcade games are in for a treat this month. Former project coordinator Aaron Giles has contributed netlist-based sound emulation for thirteen Cinematronics vector games: Space War, Barrier, Star Hawk, Speed Freak, Star Castle, War of the Worlds, Sundance, Tail Gunner, Rip Off, Armor Attack, Warrior, Solar Quest and Boxing Bugs. This resolves long-standing issues with the previous simulation based on playing recorded samples. Colin Howell has also refined the sound emulation for Midway’s 280-ZZZAP and Gun Fight. V.Smile joystick inputs are now working for all dumped cartridges, and with fixes for ROM bank selection the V.Smile Motion software is also usable. The accelerometer-based V.Smile Motion controller is not emulated, but the software can all be used with the standard V.Smile joystick controller. Another pair of systems with inputs that now work is the original Macintosh (128K/512K/512Ke) and Macintosh Plus. These systems’ keyboards are now fully emulated, including the separate numeric keypad available for the original Macintosh, the Macintosh Plus keyboard with integrated numeric keypad, and a few European ISO layout keyboards for the original Macintosh. There are still some emulation issues, but you can play Beyond Dark Castle with MAME’s Macintosh Plus emulation again. In other home computer emulation news, MAME’s SAM Coupé driver now supports a number of peripherals that connect to the rear expansion port, a software list containing IRIX hard disk installations for SGI MIPS workstations has been added, and tape loading now works for the Specialist system (a DIY computer designed in the USSR). Of course, there’s far more to enjoy, and you can read all about it in the whatsnew.txt file, or get the source and 64-bit Windows binary packages from the download page. (For brevity, promoted V.Smile software list entries and new Barcrest MPU4 clones made up from existing dumps have been omitted here.)
MAME Testers Bugs Fixed
02603: [Sound] (cinemat.cpp) tailg: Phasor sample plays incorrectly. (Aaron Giles)
Toy Story 3 (Lexibook) [Sean Riddle, Kamaal Brown, David Haywood]
unknown 'TE06' [TeamEurope, Roberto Fresca]
Unknown Compumatic ProSPDP based darts machine [jordigahan, ClawGrip]
VideoJet Kiu Games [Sean Riddle, David Haywood]
Virtual TV Ping Pong [TeamEurope, David Haywood]
Yataimura Kingyosukui (4-player, China, Ver 1.000) [Darksoft]
New clones marked as NOT_WORKING
Anakonda [Robbbert]
Funhouse (L-2) [PinMAME]
Funhouse (L-2, prototype PA-1 System 11 sound) [PinMAME]
Kharkovsky [Robbbert]
Laser Ball (L-2, PROM sound) [PinMAME]
Last Action Hero (1.04 France) [PinMAME]
Last Action Hero (1.07) [José Renato Castro Milanez, Sergio Munemori]
Magic Card - Wien (Sicherheitsversion 1.2) [TeamEurope, Roberto Fresca]
Nove Diamante (bootleg) [Ioannis Bampoulas]
Unga [Robbbert]
New working software list additions
fmtowns_cd: Akiko - Premium Version, Cal III - Kanketsu-hen, Chiemi & Naomi, Curse, Eikan wa Kimi ni 2 - Koukou Yakyuu Zenkoku Taikai, FM Towns Application Catalog CD-ROM - Original Soft-hen, G5 (HMA-206), Gambler - Queen's Cup, Gokuraku Mandala, Hyper Fetishism, Illust Hyakka - Yamashita Hideki no Ikiiki Cut-shuu, Iris-tei Serenade, Jouhou Club - Card Processor Ver. 1.1, Mahjong Musashi, Manami no Doko made Iku no? 2 - Return of the Kuro Pack, The Manhole (1990-08-01), Marionette Mind, Mirage 2 - Torry, Neat & Roan Fairladies in MagicLand, Noushuku Angel 120%, Shamhat - The Holy Circlet (FM Towns Marty version), Tenshin Ranma, Two Shot Diary, Viper-V12 RS, Viper-V8 Turbo RS, YES! HG - Erotic Voice Version [redump.org, r09]
gba:
Rayman IV (Rayman - Sunshine of Trip) (unlicensed) (protection hacked) [RibShark]
Crash Advance IV (unlicensed) (protection hacked), Digimon - Ruby and Sapphire (unlicensed) (protection hacked), The Lord of the Rings IV - The Fellowship of the Ring (unlicensed) (protection hacked), Pokemon - Sapphire Version (unlicensed) (protection hacked), Rayman IV (Rayman - Puteshestviye Solnechnogo Sveta) (unlicensed) (Russian) (protection hacked), Sonic 3 - Fighter Sonic (unlicensed) (protection hacked), Super Mario DX (unlicensed) (protection hacked), Teenage Mutant Ninja Turtles 2 (unlicensed) (protection hacked), Ultraman - Confrontation Between Justice And Evil (Ul'traman - Konfrontatsiya mezhdu spravedlivost'yu i zlom) (unlicensed) (Russian) (protection hacked), X-Man - Armour of Might (X-men) (unlicensed) (Russian) (protection hacked) [taizou]
Bloodwych (Quest & Glory Compilation) (Euro), Bloodwych (USA), Budokan - The Martial Spirit (5.25"), The Colonel's Bequest (3.5"), The Colonel's Bequest (5.25"), Dragon's Lair (5.25"), F29 Retaliator, Lakers vs Celtics and the NBA Playoffs (3.5"), Leisure Suit Larry Goes Looking for Love (in Several Wrong Places) (5.25"), Leisure Suit Larry in the Land of the Lounge Lizards, Mario Andretti's Racing Challenge, Speedball 2 - Brutal Deluxe (Euro, 3.5"), TV Sports Basketball (3.5", USA, EGA/TANDY version), TV Sports Basketball (3.5", USA, VGA version), TV Sports Basketball (5.25", UK, EGA/TANDY version), TV Sports Basketball (5.25", UK, VGA version), Xenon 2: Megablast [ArcadeShadow]
SCO XENIX System V Development System version 2.1.3 [archive.org, Davide Cavalca]
IBM Personal Computer Interactive Executive (PC/IX) 1.00 [WinWorld, Davide Cavalca]
ibm5170: B-17 Flying Fortress (5.25"), Corridor 7: Alien Invasion (demo), Maniac Mansion: Day of the Tentacle (France), Out of this World (USA, 3.5" DD), Out of this World (USA, 5.25" HD), Sam & Max Hit the Road (Germany) [ArcadeShadow]
pc98_cd: F15 Strike Eagle III, if 2 - Invitations from Fantastic Stories, Manami no Doko made Iku no? 2 - Return of the Kuro Pack, Phobos, Pro Student G (ALS-0010), YES! HG - Erotic Voice Version, Yuurou - Transient Sands [redump.org, r09]
sgi_mips:
Desktop Special Edition 1.0, European Language Module 1.1, European Language Module 1.3.1, Hot Mix 5, Hot Mix 7, IndiZone 1.0, IRIX 5.2 for Indy R4600PC and Challenge SX, IRIX Patch 5.1.1.2, ONC3/NFS for IRIX 6.2 Version 1, ONC3/NFS for IRIX 6.2 with Indigo2 IMPACT 10000 Version 1, Support Advantage 10/94, Support Advantage 6/95, SupportFolio 2/97, SupportFolio 4/97 [darkstar]
Disney/Pixar Wall-E (China) [tenyuhuang, Ryan Holtz]
Les Bisounours - Le monde merveilleux des Bisounours (France), Nickelodeon Bob L'éponge - Une journée dans la vie d'une éponge (France) [DisizDream]
vsmilem_cart:
Disney/Pixar Cars 2 (France), Disney/Pixar Toy Story 3 (France), DreamWorks Kung Fu Panda - La mission de Po (France), Football Challenge (France), Martin Le Dauphin (France), Nickelodeon Dora L'Exploratrice - Les adventures de Dora Apprentie Mécano (France), Sporti'Folies (France) [DisizDream, Ryan Holtz]
Action Mania (USA), Disney/Pixar Toy Story 3 (USA), Marvel Spider-Man & Friends - Secret Missions (USA), Soccer Challenge (USA) [Sean Riddle, TeamEurope, Ryan Holtz]
mobigo_cart: Disney Jake and the Neverland Pirates (USA, alt), Disney Princess (USA, alt), Disney/Pixar Brave (USA), Dreamworks Shrek - Forever After (US), NAND User Cartridge (unknown data, set 1), NAND User Cartridge (unknown data, set 2), Sesame Street - Elmo and Abby - Nature Explorers (USA) [TeamEurope]
novag_ssensor4: Quartz Chess Clock [Berger]
pc98_cd: DOR Special Edition '93, DOR Special Edition '93 (alt), Kanji Land 3-nen, Kyrandia II - The Hand of Fate, Lemon Cocktail Collection, Lip 3 - Lipstick Adventure 3, Mirage 2 - Torry, Neat & Roan Fairladies in MagicLand [redump.org, r09]
pi_storyreader_cart: Disney Blanca Nieves y los siete enanos (Spain), Disney El Rey León (Spain), Walt Disney Peter Pan (Spain) [TeamEurope, ClawGrip]
tvgogo:
Basketball (EU) [ClawGrip, TeamEurope]
Basketball (US) [Sean Riddle, David Haywood]
vsmileb_cart: Teletubbies (France) [DisizDream]
Merged pull requests
6825: docs: Improved analog joystick mapping documentation, and added health warnings. [Firehawke]
6837: debugger: Added loadr and saver commands for loading or saving data to/from a memory region. [bombzj]
6838: fmtowns_cd.xml: Added 28 new entries, and replaced 22 entries with improved dumps. [redump.org, r09]
6844: gigatron: Hooked up CPU output callback, fixed program counter wrapping, and added CPU input callback. [Sterophonick]
MAME 0.223 has finally arrived, and what a release it is – there’s definitely something for everyone! Starting with some of the more esoteric additions, Linus Åkesson’s AVR-based hardware chiptune project and Power Ninja Action Challenge demos are now supported. These demos use minimal hardware to generate sound and/or video, relying on precise CPU timings to work. With this release, every hand-held LCD game from Nintendo’s Game & Watch and related lines is supported in MAME, with Donkey Kong Hockey bringing up the rear. Also of note is the Bassmate Computer fishing aid, made by Nintendo and marketed by Telko and other companies, which is clearly based on the dual-screen Game & Watch design. The steady stream of TV games hasn’t stopped, with a number of French releases from Conny/VideoJet among this month’s batch. For the first time ever, games running on the Barcrest MPU4 video system are emulated well enough to be playable. Titles that are now working include several games based on the popular British TV game show The Crystal Maze, Adders and Ladders, The Mating Game, and Prize Tetris. In a clear win for MAME’s modular architecture, the breakthrough came through the discovery of a significant flaw in our Motorola MC6840 Programmable Timer Module emulation that was causing issues for the Fairlight CMI IIx synthesiser. In the same manner, the Busicom 141-PF desk calculator is now working, thanks to improvements made to Intel 4004 CPU emulation that came out of emulating the INTELLEC 4 development system and the prototype 4004-based controller board for Flicker pinball. The Busicom 141-PF is historically significant, being the first application of Intel’s first microprocessor. Fans of classic vector arcade games are in for a treat this month. Former project coordinator Aaron Giles has contributed netlist-based sound emulation for thirteen Cinematronics vector games: Space War, Barrier, Star Hawk, Speed Freak, Star Castle, War of the Worlds, Sundance, Tail Gunner, Rip Off, Armor Attack, Warrior, Solar Quest and Boxing Bugs. This resolves long-standing issues with the previous simulation based on playing recorded samples. Colin Howell has also refined the sound emulation for Midway’s 280-ZZZAP and Gun Fight. V.Smile joystick inputs are now working for all dumped cartridges, and with fixes for ROM bank selection the V.Smile Motion software is also usable. The accelerometer-based V.Smile Motion controller is not emulated, but the software can all be used with the standard V.Smile joystick controller. Another pair of systems with inputs that now work is the original Macintosh (128K/512K/512Ke) and Macintosh Plus. These systems’ keyboards are now fully emulated, including the separate numeric keypad available for the original Macintosh, the Macintosh Plus keyboard with integrated numeric keypad, and a few European ISO layout keyboards for the original Macintosh. There are still some emulation issues, but you can play Beyond Dark Castle with MAME’s Macintosh Plus emulation again. In other home computer emulation news, MAME’s SAM Coupé driver now supports a number of peripherals that connect to the rear expansion port, a software list containing IRIX hard disk installations for SGI MIPS workstations has been added, and tape loading now works for the Specialist system (a DIY computer designed in the USSR). Of course, there’s far more to enjoy, and you can read all about it in the whatsnew.txt file, or get the source and 64-bit Windows binary packages from the download page. (For brevity, promoted V.Smile software list entries and new Barcrest MPU4 clones made up from existing dumps have been omitted here.)
MAME Testers Bugs Fixed
02603: [Sound] (cinemat.cpp) tailg: Phasor sample plays incorrectly. (Aaron Giles)
Toy Story 3 (Lexibook) [Sean Riddle, Kamaal Brown, David Haywood]
unknown 'TE06' [TeamEurope, Roberto Fresca]
Unknown Compumatic ProSPDP based darts machine [jordigahan, ClawGrip]
VideoJet Kiu Games [Sean Riddle, David Haywood]
Virtual TV Ping Pong [TeamEurope, David Haywood]
Yataimura Kingyosukui (4-player, China, Ver 1.000) [Darksoft]
New clones marked as NOT_WORKING
Anakonda [Robbbert]
Funhouse (L-2) [PinMAME]
Funhouse (L-2, prototype PA-1 System 11 sound) [PinMAME]
Kharkovsky [Robbbert]
Laser Ball (L-2, PROM sound) [PinMAME]
Last Action Hero (1.04 France) [PinMAME]
Last Action Hero (1.07) [José Renato Castro Milanez, Sergio Munemori]
Magic Card - Wien (Sicherheitsversion 1.2) [TeamEurope, Roberto Fresca]
Nove Diamante (bootleg) [Ioannis Bampoulas]
Unga [Robbbert]
New working software list additions
fmtowns_cd: Akiko - Premium Version, Cal III - Kanketsu-hen, Chiemi & Naomi, Curse, Eikan wa Kimi ni 2 - Koukou Yakyuu Zenkoku Taikai, FM Towns Application Catalog CD-ROM - Original Soft-hen, G5 (HMA-206), Gambler - Queen's Cup, Gokuraku Mandala, Hyper Fetishism, Illust Hyakka - Yamashita Hideki no Ikiiki Cut-shuu, Iris-tei Serenade, Jouhou Club - Card Processor Ver. 1.1, Mahjong Musashi, Manami no Doko made Iku no? 2 - Return of the Kuro Pack, The Manhole (1990-08-01), Marionette Mind, Mirage 2 - Torry, Neat & Roan Fairladies in MagicLand, Noushuku Angel 120%, Shamhat - The Holy Circlet (FM Towns Marty version), Tenshin Ranma, Two Shot Diary, Viper-V12 RS, Viper-V8 Turbo RS, YES! HG - Erotic Voice Version [redump.org, r09]
gba:
Rayman IV (Rayman - Sunshine of Trip) (unlicensed) (protection hacked) [RibShark]
Crash Advance IV (unlicensed) (protection hacked), Digimon - Ruby and Sapphire (unlicensed) (protection hacked), The Lord of the Rings IV - The Fellowship of the Ring (unlicensed) (protection hacked), Pokemon - Sapphire Version (unlicensed) (protection hacked), Rayman IV (Rayman - Puteshestviye Solnechnogo Sveta) (unlicensed) (Russian) (protection hacked), Sonic 3 - Fighter Sonic (unlicensed) (protection hacked), Super Mario DX (unlicensed) (protection hacked), Teenage Mutant Ninja Turtles 2 (unlicensed) (protection hacked), Ultraman - Confrontation Between Justice And Evil (Ul'traman - Konfrontatsiya mezhdu spravedlivost'yu i zlom) (unlicensed) (Russian) (protection hacked), X-Man - Armour of Might (X-men) (unlicensed) (Russian) (protection hacked) [taizou]
Bloodwych (Quest & Glory Compilation) (Euro), Bloodwych (USA), Budokan - The Martial Spirit (5.25"), The Colonel's Bequest (3.5"), The Colonel's Bequest (5.25"), Dragon's Lair (5.25"), F29 Retaliator, Lakers vs Celtics and the NBA Playoffs (3.5"), Leisure Suit Larry Goes Looking for Love (in Several Wrong Places) (5.25"), Leisure Suit Larry in the Land of the Lounge Lizards, Mario Andretti's Racing Challenge, Speedball 2 - Brutal Deluxe (Euro, 3.5"), TV Sports Basketball (3.5", USA, EGA/TANDY version), TV Sports Basketball (3.5", USA, VGA version), TV Sports Basketball (5.25", UK, EGA/TANDY version), TV Sports Basketball (5.25", UK, VGA version), Xenon 2: Megablast [ArcadeShadow]
SCO XENIX System V Development System version 2.1.3 [archive.org, Davide Cavalca]
IBM Personal Computer Interactive Executive (PC/IX) 1.00 [WinWorld, Davide Cavalca]
ibm5170: B-17 Flying Fortress (5.25"), Corridor 7: Alien Invasion (demo), Maniac Mansion: Day of the Tentacle (France), Out of this World (USA, 3.5" DD), Out of this World (USA, 5.25" HD), Sam & Max Hit the Road (Germany) [ArcadeShadow]
pc98_cd: F15 Strike Eagle III, if 2 - Invitations from Fantastic Stories, Manami no Doko made Iku no? 2 - Return of the Kuro Pack, Phobos, Pro Student G (ALS-0010), YES! HG - Erotic Voice Version, Yuurou - Transient Sands [redump.org, r09]
sgi_mips:
Desktop Special Edition 1.0, European Language Module 1.1, European Language Module 1.3.1, Hot Mix 5, Hot Mix 7, IndiZone 1.0, IRIX 5.2 for Indy R4600PC and Challenge SX, IRIX Patch 5.1.1.2, ONC3/NFS for IRIX 6.2 Version 1, ONC3/NFS for IRIX 6.2 with Indigo2 IMPACT 10000 Version 1, Support Advantage 10/94, Support Advantage 6/95, SupportFolio 2/97, SupportFolio 4/97 [darkstar]
Disney/Pixar Wall-E (China) [tenyuhuang, Ryan Holtz]
Les Bisounours - Le monde merveilleux des Bisounours (France), Nickelodeon Bob L'éponge - Une journée dans la vie d'une éponge (France) [DisizDream]
vsmilem_cart:
Disney/Pixar Cars 2 (France), Disney/Pixar Toy Story 3 (France), DreamWorks Kung Fu Panda - La mission de Po (France), Football Challenge (France), Martin Le Dauphin (France), Nickelodeon Dora L'Exploratrice - Les adventures de Dora Apprentie Mécano (France), Sporti'Folies (France) [DisizDream, Ryan Holtz]
Action Mania (USA), Disney/Pixar Toy Story 3 (USA), Marvel Spider-Man & Friends - Secret Missions (USA), Soccer Challenge (USA) [Sean Riddle, TeamEurope, Ryan Holtz]
mobigo_cart: Disney Jake and the Neverland Pirates (USA, alt), Disney Princess (USA, alt), Disney/Pixar Brave (USA), Dreamworks Shrek - Forever After (US), NAND User Cartridge (unknown data, set 1), NAND User Cartridge (unknown data, set 2), Sesame Street - Elmo and Abby - Nature Explorers (USA) [TeamEurope]
novag_ssensor4: Quartz Chess Clock [Berger]
pc98_cd: DOR Special Edition '93, DOR Special Edition '93 (alt), Kanji Land 3-nen, Kyrandia II - The Hand of Fate, Lemon Cocktail Collection, Lip 3 - Lipstick Adventure 3, Mirage 2 - Torry, Neat & Roan Fairladies in MagicLand [redump.org, r09]
pi_storyreader_cart: Disney Blanca Nieves y los siete enanos (Spain), Disney El Rey León (Spain), Walt Disney Peter Pan (Spain) [TeamEurope, ClawGrip]
tvgogo:
Basketball (EU) [ClawGrip, TeamEurope]
Basketball (US) [Sean Riddle, David Haywood]
vsmileb_cart: Teletubbies (France) [DisizDream]
Merged pull requests
6825: docs: Improved analog joystick mapping documentation, and added health warnings. [Firehawke]
6837: debugger: Added loadr and saver commands for loading or saving data to/from a memory region. [bombzj]
6838: fmtowns_cd.xml: Added 28 new entries, and replaced 22 entries with improved dumps. [redump.org, r09]
6844: gigatron: Hooked up CPU output callback, fixed program counter wrapping, and added CPU input callback. [Sterophonick]
MAME 0.222, the product of our May/June development cycle, is ready today, and it’s a very exciting release. There are lots of bug fixes, including some long-standing issues with classics like Bosconian and Gaplus, and missing pan/zoom effects in games on Seta hardware. Two more Nintendo LCD games are supported: the Panorama Screen version of Popeye, and the two-player Donkey Kong 3 Micro Vs. System. New versions of supported games include a review copy of DonPachi that allows the game to be paused for photography, and a version of the adult Qix game Gals Panic for the Taiwanese market. Other advancements on the arcade side include audio circuitry emulation for 280-ZZZAP, and protection microcontroller emulation for Kick and Run and Captain Silver. The GRiD Compass series were possibly the first rugged computers in the clamshell form factor, possibly best known for their use on NASA space shuttle missions in the 1980s. The initial model, the Compass 1101, is now usable in MAME. There are lots of improvements to the Tandy Color Computer drivers in this release, with better cartridge support being a theme. Acorn BBC series drivers now support Solidisk file system ROMs. Writing to IMD floppy images (popular for CP/M computers) is now supported, and a critical bug affecting writes to HFE disk images has been fixed. Software list additions include a collection of CDs for the SGI MIPS workstations. There are several updates to Apple II emulation this month, including support for several accelerators, a new IWM floppy controller core, and support for using two memory cards simultaneously on the CFFA2. As usual, we’ve added the latest original software dumps and clean cracks to the software lists, including lots of educational titles. Finally, the memory system has been optimised, yielding performance improvements in all emulated systems, you no longer need to avoid non-ASCII characters in paths when using the chdman tool, and jedutil supports more devices. There were too many HyperScan RFID cards added to the software list to itemise them all here. You can read about all the updates in the whatsnew.txt file, or get the source and 64-bit Windows binary packages from the download page.
Shuffleshot (v1.35) [Phil Bennett, Aaron Giles, FactoryDavey, Bri Hefele, Joe Drilling, runwhiteboyrun, Christian “Ferris Bueller” Deitering, Justin Khan, ColdPie, Joe Boyd, Vitorio Miliano, JFlow @scrapbrain, Darkstar, Tom Summersell, Ryan Holtz, Brian Troha]
Shuffleshot (v1.38) [Phil Bennett, Aaron Giles, FactoryDavey, Bri Hefele, Joe Drilling, runwhiteboyrun, Christian “Ferris Bueller” Deitering, Justin Khan, ColdPie, Joe Boyd, Vitorio Miliano, JFlow @scrapbrain, Darkstar, Tom Summersell, Ryan Holtz, Brian Troha]
Street Fighter (Japan, bootleg) [f205v]
Tandy Radio Shack MCX-128 [Tim Lindner]
Trivia (Questions Series 12 Alt Question Rom) [Brian Troha]
Trivia (Questions Series 14 Alt Question Rom) [Brian Troha]
Trivia (Version 1.03a Sex questions, Alt revision questions) [Brian Troha]
Vampire Savior: The Lord of Vampire (Brazil 970519) [Renan Eler, Roberto Louzada, Filipe Nascimento, CPS Raptor group, SHVB]
Varth: Operation Thunderstorm (bootleg, set 2) [gmx, The Dumping Union]
Video Pinball (4 ROMs version) [f205v]
Machines promoted to working
Bingo Time [TeamEurope, Ivan Vangelista]
Excalibur Electronics Ford Racing [David Haywood]
GRiD Computers Compass 1101 [usernameak]
Kick and Run (World) [dink, David Haywood]
Ritam Master Monty [hap]
Ritam Monty Plays Scrabble [hap]
Tetris + Cherry Master (Corsica, v8.01, set 2) [Ioannis Bampoulas]
Clones promoted to working
Kick and Run (US) [dink, David Haywood]
World Class Bowling Tournament (v1.30) [Phil Bennett, Aaron Giles, FactoryDavey, Bri Hefele, Joe Drilling, runwhiteboyrun, Christian “Ferris Bueller” Deitering, Justin Khan, ColdPie, Joe Boyd, Vitorio Miliano, JFlow @scrapbrain, Darkstar, Tom Summersell, Ryan Holtz, Brian Troha]
New machines marked as NOT_WORKING
Crazy Balls [TTL] [f205v]
Dardomania (v2.1) [Juan Romero, ClawGrip]
Densha de GO 3! Tsukin-hen (V2.03J) [andynumbers, The Dumping Union]
dreamGEAR My Arcade Go Gamer Portable (Family Sport 220-in-1) [Sean Riddle, Kev (FBN), anonymous]
GNAT Computers GNAT System 10 [Don Maslin Archive, AJR]
Schneider Rundfunkwerke AG 386SX System 40 (VGA) [rfka01]
Schneider Rundfunkwerke AG Tower AT 201, 202, 220, 240 and 260 (286,EGA) [rfka01]
Sergey Kiselev Micro 8088 [rfka01]
Sergey Kiselev Sergey's XT [rfka01]
Sergey Kiselev Xi processor board [rfka01]
Shinobi (Datsu bootleg, set 3) [hammy]
Star Wars (1.01) [PinMAME]
Super Six Plus II English Mark Darts (Spanish) [jordigahan, ClawGrip]
Torch Computers Torch Model 301 [Nigel Barnes, Centre for Computing History]
Torch Computers Torch Model 725 [Nigel Barnes, Jules Richardson]
Twilight Zone (L-5) [PinMAME]
New working software list additions
apple2_flop_clcracked: Animal Watch: Tracks (cleanly cracked), Animal Watch: Whales (cleanly cracked), Animal Watch: Wolves (cleanly cracked), Deutsch: Aktuell 1 (Second Edition) (cleanly cracked), Deutsche Grammatik: der-die-das (cleanly cracked), Dinosaur Construction Kit: Tyrannosaurus Rex (cleanly cracked), German Word Order (cleanly cracked), German Word Order (Revision 2) (cleanly cracked), Homonyms I (Revision 2) (cleanly cracked), Homonyms II (Revision 2) (cleanly cracked), Jabbertalky (cleanly cracked), MECC-A757 Computer Generated Mathematics Materials Volume 1: Problem Solving (Version 1.3) (cleanly cracked), MECC-A816 Electronic Money (Version 1.0) (cleanly cracked), MECC-A816 Electronic Money (Version 1.1) (cleanly cracked), MECC-A824 Classification (Version 1.0) (cleanly cracked), Pronouns I (Revision 2) (cleanly cracked), Pronouns II (Revision 2) (cleanly cracked), Rhymes and Riddles (Revision 2) (cleanly cracked), Sentence Combining (cleanly cracked), The Wizard of Id's WizMath (cleanly cracked), Verbs I (Revision 2) (cleanly cracked), Verbs II (Revision 2) (cleanly cracked) [4am, Firehawke]
apple2_flop_orig: Ace Detective, Algernon: An Introduction to Programming Logic, Amazing Arithmetricks (Version 1.0), Animal Hotel, Asteroids in Space, Backyard Birds (Version 1.0), Bag of Tricks (Version 2.1), Ballyhoo (Release 97 / 851218), Barron's SAT: 1st Edition, Barron's SAT: 2nd Edition, Behind The Wheel: Blue Level, Bluegrass Bluff (Version 1.0), Bounce!, California Games, Cavity Busters (Version 1.0), Championship Golf, Cleanwater Detectives (Version 1.0), Colossus Chess IV, CommuniKeys (Version 1.1), Conquering Decimals (+, -) (Version 1.0), Conquering Decimals (×, ÷) (Version 1.0), Conquering Fractions (+, -) (Version 1.0), Conquering Fractions (×, ÷) (Version 1.0), CryptoQuest (Version 1.0), Decimal Concepts (Version 1.0), The Demon's Forge, Deutsche Grammatik: der-die-das, Dr. Livingstone, I Presume? (Version 1.0), Dunjonquest: The Datestones of Ryn, Eerieville Library (Version 1.0), Electrifying Adventures (Version 1.0), Estimation Activities (Version 1.0), Estimation Strategies (Version 1.0), Estimation: Quick Solve I (Version 1.0), The Executive Secretary (Version 4.2), Exploring Chaos (Version 1.0), Exploring Gas Laws (Version 1.0), Exploring Sequences and Series (Version 1.0), Fish School (Version 1.0), Five-Star Forecast (Version 1.0), Fossil Hunter (Version 1.0), Fraction Munchers (Version 1.0), Fraction Practice Unlimited (Version 1.1), Fraktured Faebles, Garbage Gang, GFL Championship Football, GraFORTH, Grammar Gobble (Version 1.0), Grammar Madness (Version 1.0), Grammar Toy Shop (Version 1.0), History Makers (Version 1.0), The Incredible Laboratory, Invisible Bugs (Version 1.0), The Last Gladiator, The Legend of Blacksilver, The Living Cell (Version 1.0), Lunar Greenhouse (Version 1.0), Magical Myths, Matterhorn Screamer, Measure Works (Version 1.0), Micro-LADS 1: Plurals and Noun/Verb Agreement, Micro-LADS 2: Verb Forms, Micro-LADS 3: Prepositions, Micro-LADS 4: Pronouns, Micro-LADS 5: Negatives, Micro-LADS 6: Deictic Expressions, Passive, WH-questions, Micro-LADS 7: Prepositions II, Miner's Cave (Version 1.0), Money Works (Version 1.0), Moving Museum (Version 1.0), Murphy's Minerals (Version 1.0), Number Munchers (Version 1.3), Nutrition Nabber (Version 1.0), Odd One Out, Paper Plane Pilot (Version 1.0), Path Tactics (Version 1.0), The Personal Secretary (Version 1.1), Phonics Prime Time: Blends and Digraphs (Version 1.0), Phonics Prime Time: Final Consonants (Version 1.0), Phonics Prime Time: Initial Consonants (Version 1.0), Phonics Prime Time: Vowels I (Version 1.0), Phonics Prime Time: Vowels II (Version 1.0), Picture Chompers (Version 1.0), Picture a Story (Version 1.0), Pizza To Go (Version 1.0), Poker Parat, Problem Solving with Nim (Version 1.0), Rocket Factory (Version 1.0), Science Toolkit Plus (Version 2.0), The Seven Cities of Gold, Snooper Troops and the case of The Granite Point Ghost, Stoichiometry, Sun and Seasons (Version 1.0), Take a Chance! (Version 1.0), Those Amazing Reading Machines I (Version 1.0), Those Amazing Reading Machines II (Version 1.0), Those Amazing Reading Machines III (Version 1.0), Time Navigator Around The World (Version 1.0), To Preserve, Protect and Defend (Version 1.0), Treasures for Sale (Version 1.0), Tycoon (Version 2.1), A View To A Kill, Weeds to Trees (Version 1.0), Wild West Math Level 5, Winnie the Pooh in the Hundred Acre Wood (Sunburst Communications release), Wonderland Puzzles (Version 1.0), Words at Work: Compound It! (Version 1.0), Words at Work: Contraction Action (Version 1.0), Words at Work: Prefix Power (Version 1.0), Words at Work: Suffix Sense (Version 1.0), World Games, Writer Rabbit (Version 1.3) [4am, Firehawke]
bbc_hdd: Master 128 ADFS Hard Drive Image V1.03, Master 128 ADFS Hard Drive Image V1.05, Model B ADFS Hard Drive Image B1.06e, Model B ADFS Hard Drive Image B1.31 (Retro Software), Model B ADFS Hard Drive Image B1.42, Model B ADFS Hard Drive Image T1.07 [RetroClinic]
bbc_rom: 512 FastBoot 1.00, 65C02 Assembler 1.60, AJS Fortran, Acorn DFS 2.45 Rev 1191, Advanced Disc Toolkit 1.71, Amcom E-Net 5.18, AMPLE Nucleus (patched), AMPLE Nucleus ID 108801, AMPLE Nucleus ID 57315, AMPLE Nucleus ID 73863, AMPLE Nucleus ID 80327, AMTOR MkII 3.05, The Artist 1.00, BeeBASE-1 1.02, Bitstik Service ROM 0.51, Chameleon ROM 1.0, Colour Dump Rom, Commstar 9003, CPFS+ 1.20, CTS Palette 1.10, Hierarchical DFS 1.05, HKR Utilities 1.00, HKR Utilities 1.10, HKR Utilities 1.20, HKR Utilities 1.30, Instat B00741, Master ROM 1.05, MasterPieCe 1.10, MasterPieCe 800 Manager 2.40, MasterPieCe 900GX Manager 1.20, Maxim 1.0, Meta Assembler 3.30A, Opus Challenger 1.00, Opus Challenger 1.01, Opus Challenger 1.03, OrthoCAM 0.02, Pen-Friend 1.21, Plotter 1.0, Prisma-3 1.30, Prisma-3 2.30, Pull Down RAM Driver 1.00, Quest 2.1B, RAMDisc 1.01, Sciways 2.01, SJ Control ROM 0.23, SJ Control ROM 0.30, System Delta 2.017, Text To Speech 1.01, U2 2nd Processor Utility 1.5, VideoNuLA 1.03, View A1.4, View A3.0 pms (Hack?), Workstation 1.4 #0135, Workstation 1.4 #0148, Workstation 1.5 [Nigel Barnes]
cgenie_cass: Megapede, Pole Position [Jürgen Buchmüller]
compis: Action1 Glosprogram (nät/skollicens), Coulombs lag (nät/skollicens), Datorn i kommunikation (enanvändare), Datorn i matematik (nät/skollicens), Får dataregister skvallra? (enanvändare), Får dataregister skvallra? (komplement), Internationella ord från grekiskan (nät/skollicens), Internationella ord från latinet (nät/skollicens), Jorden skiftas, folket skingras (nät/skollicens), Kinetik (nät/skollicens), Matematikverkstad I (beta, nät/skollicens), Millikans försök (enanvändare), Mät energi (enanvändare), MätEtt (enanvändare), RitEtt (enanvändare), Räkna lätt, räkna rätt (demo, version 6175), StatEtt - Analys, Stava rätt på nytt sätt (version 8481), Stil-Plus (alfa 1.0, nät/skollicens), Video-butiken (enanvändare) [FakeShemp]
eti660_quik: Music Maker, Pong, Wipeout [Robbbert]
excalibur64: Boot disk [Robbbert]
fidel_msc:
Challenger Advanced Chess [hap, Berger, Achim]
Challenger Book Openings [Berger]
fmtowns_cd: Dracula Hakushaku - Bishoujo-tachi no Chi no Shitatari, Hyper Planet, Lemon Cocktail Collection, Märchen Toshokan - Grimm Douwa - Bremen no Ongakutai, Nihon no Rekishi - Ishin-hen - Kurofune Raikou, Phobos, Towns Chiri - Jigsaw World [redump.org, r09]
The Amazing Spider-Man, Eye of Horus [ArcadeShadow]
Centipede, Ms. Pac-Man [r09]
ibm5170:
Alone in the Dark 2 (France), Cruise for a Corpse, Formula One Grand Prix (Euro), Leisure Suit Larry 1: In the Land of the Lounge Lizards (EGA release), Leisure Suit Larry 1: In the Land of the Lounge Lizards (VGA release), Police Quest in Pursuit of the Death Angel (VGA release), Roberta Williams' Laura Bow in "The Dagger of Amon Ra", Silverball 2 Plus, Speed Racer in the Challenge of Racer X, Subwar 2050 - The Underwater Combat Simulation [ArcadeShadow]
Chuck Yeager's Air Combat (Gravis Ultrasound version), Dune (5.25"), Frontier - Elite II, Gravis UltraSound (GUS) Installation - V2.05 [r09]
msx1_cart: Ink - Exxon Surfing [anonymous]
pc98: Eimmy to Yobanaide (Demo), Ekispert, Ekudorado - Kagami no Naka no Oukoku, Elm Knight - A Living Body Armor (Demo), Elthlead Senshi, EO System 3.0 (v1.10 installer), EPSON Jiko Shindan Program, EPSON MS-DOS 2.11 (Rev. E22), EPSON MS-DOS 2.11 (Rev. R15), EPSON Nihongo Disk BASIC v2.0, Estate, eXOn, eXOn (Demo), Expert-98 [Neo Kobe Collection, r09]
qx10_flop: CP/M-80 R2.2 for QX-10 & QX-16 1983 [Carl]
saitek_schess: Strong Play Module [Berger, Achim]
sgi_mips:
Barco Creator 7.2, CATIA V5R16, Diagnostics 5.3, Hot Mix 4, IndiZone, IRIX 4.0.2, IRIX 4.0.4B for IP4, IP5, IP6, IP12 and IP17, IRIX 4.0.5, IRIX 5.3 Current Patches December 1997, IRIX 5.3 Recommended/Required Patches September 1997, IRIX 6.0.1, IRIX 6.1, IRIX 6.5.22, IRIX 6.5.30 [archive.org, Davide Cavalca]
Ada95 Compiler 1.2 for IRIX 5.3, 6.2 and 6.3, Ada95 Compiler 1.3 for IRIX 6.2, 6.3, 6.4 and 6.5, C++ Translator 3.2, Compiler Execution Environment 7.3 for IRIX 6.5 through 6.5.4, Cosmo Software for IRIX 5.3, 6.2, 6.3 and 6.4, Cosmo Suite, DCE 1.2.2 Base Executive/Client for IRIX 6.5.2, Digital Media Dev Option 1.1, Documenter's Workbench 4.1.3, ENlightenDSM 3.1 for UNIX and NT, Hot Mix 18 - Explore Tools and Technologies for Silicon Graphics, Hot Mix 19, ImageVision Library 3.2, ImageVision Library 3.2.1, IRIS Development Option 4.1.1, IRIS Performer 2.2 Friends Demo CD for IRIX 6.2 and later, IRIS Performer 2.2 Yosemite Demo CD for IRIX 6.2 and later, IRIS Performer 2.2 for IRIX 6.2 and later, IRIS Inventor 1.1.2, IRIX 4.0.5H, IRIX 4.0.5H and 4.0.5IOP R4400 Patch, IRIX 5.1.1, IRIX 5.2, IRIX 5.3 for Indy R4400 175MHz, IRIX 6.2 Development Foundation, IRIX 6.2 Development Libraries, IRIX 6.3 Development Foundation, IRIX 6.3 Development Foundation 1.2 for IRIX 6.3, IRIX 6.3 Development Libraries, IRIX 6.4 Applications August 1997, IRIX 6.4 Development Foundation, IRIX 6.4 Development Libraries, IRIX 6.4 for Origin, Onyx2 and OCTANE, IRIX 6.5.1, IRIX 6.5.6, IRIX Development Foundation 1.2 for IRIX 6.2, IRIX Development Foundation 1.2 for IRIX 6.4, IRIX Networker 4.1.3, IRIX Patch 5.1.1.1, MineSet 2.0.1 for IRIX 6.2 and later, MIPSpro 7.2, MIPSpro 7.3, MIPSpro All-Compiler CD May 1999 for IRIX 6.5 and later, Molecular Inventor Development Kit 1.1, NetWorker 4.2.5 for IRIX 5.3, 6.2, 6.3 and 6.4, Networker 4.2.5 for IRIX 6.2, 6.3 and 6.4, O2 Out of Box Experience, Open Inventor 3D Toolkit 2.1.2, Origin and Onyx2 System Disk Patches, Origin/Onyx2 Patch Supplement for IRIX 6.5, Performance Co-Pilot 1.3 for IRIX 5.3, 6.2, 6.3 and 6.4, Performance Co-Pilot 2.1 for IRIX 6.2, 6.3, 6.4 and 6.5.5, Performance Co-Pilot for Oracle 2.0 for IRIX 5.3, 6.2, 6.3, 6.4 and 6.5, Performance Co-Pilot for Web Servers 2.0 for IRIX 5.3, 6.2, 6.3, 6.4 and 6.5, Performance Co-Pilot for WebServers 1.1, ProDev Developers Suite, ProDev Workshop 2.6.5 for IRIX 6.2, 6.3 and 6.4, SCSL Scientific Library 1.2 for IRIX 6.4 and 6.5, Silicon Graphics 1600SW Flat Panel Monitor Owner's Manual, Silicon Graphics MultiLink Adapter Documentation, Visual Magic Tools 1.0, Wavefront Composer 3.5.1 Visualizer Paint 3.5.1, WebFORCE February 1998, WorkShop Pro MPF 2.7 for IRIX 6.2, 6.3 and 6.4 [Bitsavers, Davide Cavalca] Desktop Special Edition 1.0 for Support Customers, European Language Module 1.3, Freeware 2.0 - Unsupported Software compatible with IRIX 6.2 and later, Hot Mix 18, IRIX 6.3 and 6.4 Recommended/Required Patches October 1997, IRIX 6.3 Applications August 1997, IRIX 6.5.13, IRIX 6.5.5, IRIX 6.5.7, IRIX 6.5.9, Insignia SoftWindows 95 4.0 for IRIX 6.3 and 6.4, Network File System 5.3, O2 Demos 1.1.1 for IRIX 6.3 including R10000, O2 IRIX 6.3 Recommended/Required Patches August 1997, ONC3/NFS Version 2, for IRIX 6.2, 6.3 and 6.4, Patch SG0000466, Support Advantage 12/95, Support Advantage 9/95, SupportFolio 5/96, SupportFolio June 96 [ClawGrip, Rampa]
Alias|Wavefront Advanced Visualizer 4.2, Alias|Wavefront Maya Composer 5.5, Alias|Wavefront PowerAnimator 7.51, Alias|Wavefront PowerAnimator 8.2, Common Desktop Environment 4.3, Cosmo Compress 1.1.1, Database Accelerator 3.0, Desktop Special Edition 1.1, Discreet Effect 6.1.3, Discreet Flame 4.0.2, ENlightenDSM 1.1 for UNIX and NT, European Language Module 1.2, Gauntlet 4.1 INTERNATIONAL for IRIX 6.2, 6.3, 6.4 and 6.5, Hot Mix Volume 11, Hot Mix Volume 12, Hot Mix Volume 17, Hot Mix Volume 8, I-DEAS Master Series Release 6, IMPACT Demos CD 6.2, IMPACT Digital Media 2.1, Indigo2 IMPACT Video for IRIX 6.5, IndiZone2, IndiZone3, Insignia SoftWindows 95 5.0 for IRIX 6.5, IRIS PERFORMER 2.0, IRIX 5.2 for Indy R4600SC/XZ and Presenter, IRIX 6.2, IRIX 6.2 Applications August 1996, IRIX 6.2 with Indigo IMPACT 10000, IRIX 6.3 for O2, Including R10000, IRIX 6.5.2, IRIX 6.5.26, IRIX 6.5.29, IRIX 6.5.4, IRIX 6.5.8, NetWorker 4.2.9 for IRIX 6.2, 6.4 and 6.5, Open Inventor 2.1.5 for IRIX 6.2, 6.3, 6.4 and 6.5, Patches for IRIX 6.2 with Indigo2 8/96, PRISMS 6.4, Samba 2.0.0 for IRIX for IRIX 6.5 and later, SGImeeting 1.0 for IRIX 6.5.2, SupportFolio 10/96, Teleffect 1.0 for IRIX 6.2, 6.3, 6.4, 6.5 for Microsoft NT 4.0 [Davide Cavalca]
Indy IRIX 5.1.1, IRIS Development Option 4.0, IRIS Development Option 4.0.1, IRIS Development Option 5.0, IRIS Development Option 5.1, IRIS Development Option 5.3, IRIS Development Option 6.2, IRIX 4.0.1, IRIX 5.0, IRIX 5.2 Beta II, IRIX 5.3 All Indigo2 IMPACT, IRIX 5.3 for Indy including R5000, IRIX 6.2 Applications May 1996, IRIX 6.2 Auxiliary Applications, IRIX 6.5 Beta, IRIX 6.5.19, IRIX 6.5.27, IRIX 6.5.28, IRIX Update 4.0.4, IRIX W4D Update 4.0.1, Network File System 5.0, Network File System 5.0.1, Network File System 5.1, Network File System 5.2, NFS/ONC3 for IRIX 6.2 Version 1.2, O2 Demos 1.0 for IRIX 6.3 including R10000, O2 Demos 1.3 for IRIX 6.5 and later, O2 Out of Box Experience 2.4 for IRIX 6.5 and later, OCTANE Demos 1.3 for IRIX 6.5 and later, Silicon Graphics General and Platform Demos 6.5.12 [jrra.zone, Davide Cavalca]
super80_flop: CP/M boot disk, Super-80 DOS disk, Super-80 DOS disk with games [Robbbert]
vgmplay:
Joe Montana II - Sports Talk Football (GEN/MD), Lotus Turbo Challenge (GEN/MD), Madden NFL '95 (GEN/MD), Teddy Boy Blues (GEN/MD), Urusei Yatsura - Dear My Friends (Sega CD) (GEN/MD) [Project2612, Tafoid]
8-bit ADV Steins;Gate (NES), AntZ Racing (Nintendo Game Boy Color), Arkanoid - Revenge of DOH (ZX Spectrum 128), Batman (Arcade), Battle Gorilla (Music Mode) (NEC PC-8801), Battle Gorilla (NEC PC-8801), Bob the Builder - Fix-it Fun! (Nintendo Game Boy Color), Bonanza Bros. (ZX Spectrum 128), Commando (Atari 7800), Gauntlet (ZX Spectrum 128), Gauntlet II (ZX Spectrum 128), Gauntlet III - The Final Quest (ZX Spectrum 128), Golden Axe (ZX Spectrum 128), Hyper Olympic 1 (MSX), Hyper Olympic 2 (MSX), Hyper Sports 1 (MSX), Hyper Sports 2 (MSX, PSG), Hyper Sports 2 (MSX, SCC), Hyper Sports 3 (MSX, PSG), Hyper Sports 3 (MSX, SCC), L.E.D. Storm (ZX Spectrum 128), LEGO Island 2 - The Brickster's Revenge (Nintendo Game Boy Color), Mickey's Speedway USA (Nintendo Game Boy Color), Missile - Ground Zero (ZX Spectrum 128), Off The Wall (PC Engine), Puyo Puyo (NES, FDS), Road Runner (Atari System 1), Robot Construction R.C. (Sharp X68000), Sky Jaguar (MSX, PSG), Sky Jaguar (MSX, SCC), Solar Invasion (ZX Spectrum 128), Spawn (Nintendo Game Boy Color), Tetris (Fujitsu FM77AV), Tetris (NEC PC-88VA), Tetris (NEC PC-9801), Tom & Jerry - The Ultimate Game of Cat and Mouse! (NES), U.S. Classic (Seta 1), UWC (NES), Wild Gunman (NES) [vgmrips.net, Tafoid]
vsmile_cart: Bob le Bricoleur - Les P'tits chantiers de Bob (France), Lil' Bratz Au Top de la Mode - Complices, Cools et Class' (France), Mission Pilote (France) [DisizDream]
Software list items promoted to working
amigaocs_flop: Budokan - The Martial Spirit (Euro), Dragon's Lair: Escape from Singe's Castle (Euro), Dungeon Master (Euro, v3.6), Dylan Dog - Ritorno al Crepuscolo (Ita), Elvira - Mistress of the Dark (Euro), Escape from Colditz (Euro), F1 GP Circuits (Euro), Fred (Euro), Graffiti Man (Euro, 5th Anniversary), Great Courts 2 (Euro), Journey to the Center of the Earth (Euro), Knight Force (Euro), Little Computer People (Euro), Loom (Euro, v1.2 19900510), Major Motion (Euro), Moebius - The Orb of Celestial Harmony (USA), North & South (Euro), Omega (Euro), Over the Net (USA), Ports of Call (Euro, v1.1, A600 Smart Start), Seconds Out (Euro, Budget), Shadow Warriors (Euro), Sim City (Euro, v1.2), Skrull the Barbarian (Euro), Strider II (Euro), Sword of Honour (Euro), Terramex (Euro), Thexder (Euro), Wonderland (Euro, v1.27i 19910422) [Angelo Salese, Dirk Best]
jaguar: Attack of the Mutant Penguins, Troy Aikman NFL Football [Angelo Salese]
pc98: Eimmy to Yobanaide, Elvira - Mistress of the Dark, Engage Errands - Miwaku no Shito-tachi, Engage Errands II - Hikari o Ninau Mono, Es no Houteishiki, Escape!, Eteris, Etsuraku no Gakuen, EVE - Burst Error, Exceed Jack - Casinopolis [Barry Rodewald, Angelo Salese, r09]
x68k_flop: Ajax, Dai Makaimura, Nemesis '90 Kai [Angelo Salese]
New NOT_WORKING software list additions
apple2_flop_orig: Wortgefect [4am, Firehawke]
bbc_rom: ADDER 1.01, Artist Plus (Palette Pad), Artist Plus (Userport Pad), Futures 2.0a, Replay System WD1770 1.11, Richardson Hard Disk (306) 2.0, SEHK Terminal 2.00, SEHK Terminal 4.01 [Nigel Barnes]
Disney Fairies Explore Your Talents (USA), Disney Jake and the Neverland Pirates (USA), Disney Princess (USA), DreamWorks/Nickelodeon The Penguins of Madagascar - Mission Madness (USA), Thomas & Friends - Really Useful Engines (USA) [TeamEurope, Sean Riddle]
Disney La Casa de Mickey Mouse (Spain), Nickelodeon Bob Esponja - Defendiendo la Fórmula Secreta (Spain) [Sean Riddle, ClawGrip]
nuon: Ballistic, FreeFall 3050 A.D., Iron Soldier 3, Merlin Racing, Space Invaders XL, Tempest 3000, Toshiba Sampler (11-1-2000) [incog]
pc98: Eisei Meijin II, Elysion (2DD version), EPSON Software Installation Program (v2.17), EPSON Software Installation Program (v2.23), EPSON Software Installation Program (v2.27), EPSON Software Installation Program (v3.02) [Neo Kobe Collection, r09]
st_flop: Street Fighter II: The World Warrior (Euro) [Mikerochip, FakeShemp]
tvgogo: Baseball (US), Whac-A-Mole (US) [Sean Riddle, David Haywood]
vsmile_cart: DreamWorks Monstres contre Aliens (France) [DisizDream]
vsmileb_cart: L'arche de Noé - L'aventure des animaux (France), Les découvertes de Mickey et ses amis (France) [DisizDream]
vsmilem_cart:
Disney La Princesse Et La Grenouille - Le grand rêve de Tiana (France), Disney Manny et ses outils (France), Shrek 4 - Il était une fin (France) [DisizDream]
Disney Meister Manny's Werkzeugkiste (Germany) [TeamEurope]
Unkle Mike. Culling Of Invisible Objects In Quake Related Engines
Intro Despite all these great achievements in video cards development and the sworn assurances of developers about drawing 2 to 3 million polygons on screen without a significant FPS drop, it’s not all that rosy in reality. It depends on methods of rendering, on the number of involved textures and on the complexity and number of involved shaders. So even if all this really does ultimately lead to high performance, it only happens in the demos that developers themselves kindly offer. In these demos, some "spherical dragons in vacuum" made of a good hundred thousand polygons are drawn very quickly indeed. However, the real ingame situation for some reason never looks like this funny dragon from a demo, and as a result many comrades abandon the development of their "Crysis killer" as soon as they can render a single room with a couple of light sources, because for some reason FPS in this room fluctuate around 40-60 even on their 8800GTS and upon creating second room it drops to a whopping 20. Of course with problems like this, it would be incorrect to say how things aren’t that bad and how the trouble of such developers are purely in their absence of correctly implemented culling, and how it is time for them to read this article. But for those who have already overcome “the first room syndrome" and tried to draw – inferior though, but, anyway - the world, this problem really is relevant. However, it should be borne in mind that QUAKE, written in ancient times, was designed for levels of a “corridor" kind exclusively; therefore methods of clipping discussed in this article are not applicable to landscapes, such as ones from STALKER or Crysis, since completely different methods work there, whose analysis is beyond the scope of this article. Meanwhile we’ll talk about the classic corridor approach to mapping and the effective clipping of invisible surfaces, as well as clipping of entire objects.
The paper tree of baloon leaves
As you probably know, QUAKE uses BSP, Binary Spacing Partition tree. This is a space indexing algorithm, and BSP itself doesn’t care if the space is open or closed, it doesn’t even care if the map is sealed, it can be anything. BSP implies the division of a three-dimensional object into a certain number of secant planes called "the branches" or "the nodes" and volumetric areas or rooms called "the leaves". The names are confusing as you can see. In QUAKE / QUAKE2 the branches usually contain information about the surfaces that this branch contain, and the leaves are an empty space, not filled with nothing. Although sometimes leaves may contain water for example (in a form of a variable that indicates, specifically, that we’ve got water in this leaf). Also, the leaf contains a pointer to the data of potential visibility (Potentially Visible Set, PVS) and a list of all surfaces that are marked as being visible from this leaf. Actually the approach itself implies that we are able to draw our world however we prefer, either using leaves only or using branches only. This is especially noticeable in different versions of QUAKE: for example, in QUAKE1 in a leaf we just mark our surfaces as visible and then we also sequentially go through all the surfaces visible from a particular branch, assembling chains of surfaces to draw them later. But in QUAKE3, we can accumulate visible surfaces no sooner than we’ll get into the leaf itself. In QUAKE and QUAKE2, all surfaces must lie on the node, which is why the BSP tree grows rather quickly, but in exchange this makes it possible to trace these surfaces by simply moving around the tree, not wasting time to check each surface separately, which affects the speed of the tracer positively. Because of this, unique surface is linked to each node (the original surface is divided into several if necessary) so in the nodes we always have what is known to be visible beforehand, and therefore we can perform a recursive search on the tree using the BBox pyramid of frustum as a direction of our movement along the BSP tree (SV_RecursiveWorldNode function). In QUAKE3, the tree was simplified and it tries to avoid geometry cuts as much as possible (a BSP tree is not even obliged to cut geometry, such cuts are but a matter of optimality of such a tree). And surfaces in QUAKE3 do not lie on the node because patches and triangle models lie there instead. But what happens would they be put on the node nevertheless, you can see on the example of "The Edge Of Forever" map that I compiled recently for an experimental version of Xash. Turns out, in places that had a couple thousand visible nodes and leaves in the original, there are almost 170 thousand of them with a new tree. And this is the result after all the preliminary optimizations, otherwise it could have been even more, he-he. Yeah, so... For this reason, the tree in QUAKE3 does not put anything on the node and we certainly do need to get into the leaf, mark visible surfaces in it and add them to the rendering list. On the contrary, in QUAKE / QUAKE2 going deep down to the leaf itself is not necessary. Invisible polygon cutoff (we are talking about world polys, separate game objects will be discussed a bit later) is based on two methods: The first method is to use bit-vectors of visibility (so-called PVS - Potential Visible Set). The second method is regular frustum culling which actually got nothing to do with BSP but works just as efficiently, for a certain number of conditions of course. Bottom line: together these two methods provide almost perfect clipping of invisible polygons, drawing a very small visible piece out of the vast world. Let's take a closer look at PVS and how it works.
When FIDO users get drunk
Underlying idea of PVS is to expose the fact that one leaf is visible from another. For BSP alone it’s basically impossible because leaves from completely different branches can be visible at the same time and you will never find a way to identify the pattern for leafs from different branches seeing each other - it simply doesn’t exist. Therefore, the compiler has to puff for us, manually checking the visibility of all leaves from all leaves. Information about visibility in this case is scanty: one Boolean variable with possible values 0 and 1. 0 means that leaf is not visible and 1 means that leaf is visible. It is easy to guess that for each leaf there is a unique set of such Boolean variables the size of the total number of leaves on the map. So a set like this but for all the leaves will take an order of magnitude more space: the number of leaves multiplied by the number of leaves and multiplied by the size of our variable in which we will store information of visibility (0 \ 1). And the number of leaves, as you can easily guess, is determined by map size map and by the compiler, which upon reaching a certain map size, cease to divide the world into leaves and treat resulting node as a leaf. Leaf size vary for different QUAKE. For example, in QUAKE1 leaves are very small. For example I can tell you that the compiler divide standard boxmap in QUAKE1 into as many as four leaves meanwhile in QUAKE3 similar boxmap takes only one leaf. But we digress. Let's estimate the size of our future PVS file. Suppose we have an average map and it has a couple thousand leaves. Would we imagine that the information about the leaf visibility is stored in a variable of char type (1 byte) then the size of visdata for this level would be, no more no less, almost 4 megabytes. That is, much AF. Of course an average modern developer would shrug and pack the final result into zip archive but back in 1995 end users had modest machines, their memory was low and therefore visdata was packed in “more different” ways. The first step in optimizing is about storing data not in bytes, but in bits. It is easy to guess that such approach reduce final result as much as 8 times and what's typical AF – does it without any resource-intensive algorithms like Huffman trees. Although in exchange, such approach somewhat worsened code usability and readability. Why am I writing this? Due to many developers’ lack of understanding for conditions in code like this:
Actually, this condition implement simple, beautiful and elegant access to the desired bit in the array (as one can recall, addressing less than one byte is impossible and you can only work with them via bit operations)
Titans that keep the globe spinning
The visible part of the world is cut off in the same fashion: we find the current leaf where the player is located (in QUAKE this is implemented by the Mod_PointInLeaf function) then we get a pointer to visdata for the current leaf (for our convenience, it is linked directly to the leaf in the form of "compressed_vis" pointer) and then stupidly go through all the leaves and branches of the map and check them for being visible from our leaf (this can be seen in the R_MarkLeaves function). As long as some leaves turn out to be visible from the current leaf we assign them a unique number from "r_visframecount" sequence which increases by one every frame. Thus, we emphasize that this leaf is visible when we build the current frame. In the next frame, "r_framecount" is incremented by one and all the leaves are considered invisible again. As one can understand, this is much more convenient and much faster than revisiting all the leaves at the end of each frame and zeroing their "visible" variable. I drew attention to this feature because this mechanism also bothers some and they don’t understand how it works. The R_RecursiveWorldNode function “walk” along leaves and branches marked this way. It cuts off obviously invisible leaves and accumulate a list of surfaces from visible ones. Of course the first check is done for the equivalence of r_visframecount and visframe for the node in question. Then the branch undergoes frustum pyramid check and if this check fails then we don’t climb further along this branch. Having stumbled upon a leaf, we mark all its surfaces visible the same way, assigning the current r_framecount value to the visframe variable (in the future this will help us to determine quickly whether a certain surface is visible in the current frame). Then, using a simple function, we determine which side we are from the plane of our branch (each branch has its own plane, literally called “plane” in the code) and, again, for now, we just take all surfaces linked to this branch and add them to the drawing chain (so-called “texturechain”), although nobody can actually stop us from drawing them immediately, right there, (in QUAKE1 source code one can see both options) having previously checked these surfaces for clipping with the frustum pyramid, or at least having made sure that the surface faces us. In QUAKE, each surface has a special flag SURF_PLANEBACK which help us determine the orientation of the surface. But in QUAKE3 there is no such flag anymore, and clipping of invisible surfaces is not as efficient, sending twice as many surfaces for rendering. However, their total number after performing all the checks is not that great. However, whatever one may say, adding this check to Xash3D raised average FPS almost one and half times in comparison to original Half-Life. This is on the matter whether it is beneficial. But we digress. So after chaining and drawing visible surfaces, we call R_RecursiveWorldNode again but now - for the second of two root branches of BSP tree. Just in case. Because the visible surfaces, too, may well be there. When the recursion ends, the result will either be a whole rendered world, or chains of visible surfaces at least. This is what can actually be sent for rendering with OpenGL or Direct3D, well, if we did not draw our world right in the R_RecursiveWorldNode function of course. Actually this method with minor upgrades successfully used in all three QUAKEs.
A naked man is in a wardrobe because he's waiting for a tram
One of the upgrades is utilization of the so-called areaportals. This is another optimization method coming straight out of QUAKE2. The point of using areaportals is about game logic being able to turn the visibility of an entire sectors on and off at its discretion. Technically, this is achieved as follows: the world is divided into zones similar to the usual partitioning along the BSP tree, however, there can’t be more than 256 of them (later I will explain why) and they are not connected in any way. Regular visibility is determined just like in QUAKE; however, by installing a special “func_areaportal” entity we can force the compiler to split an area in two. This mechanism operates on approximately the same principle as the algorithm of searching for holes in the map, so you won’t deceive the compiler by putting func_areaportal in a bare field - the compiler will simply ignore it. Although if you make areaportal the size of the cross-section of this field (to the skybox in all directions) in spite of everything the zones will be divided. We can observe this technique in Half-Life 2 where an attempt to return to old places (with cheats for example) shows us disconnected areaportals and a brief transition through the void from one zone to another. Actually, this mechanism helped Half-Life 2 simulate large spaces successfully and still use BSP level structure (I have already said that BSP, its visibility check algorithm to be precise, is not very suitable for open spaces). So installed areaportal forcibly breaks one zone into two, and the rest of the zoneization is at the discretion of the compiler, which at the same time makes sure not to exceed 256 zones limit, so their sizes can be completely different. Well, I repeat, it depends on the overall size of the map. Our areaportal is connected to some door dividing these two zones. When the door is closed - it turns areaportal off and the zones are separated from each other. Therefore, if the player is not in the cut off zone, then rendering it is not worth it. In QUAKE, we’d have to do a bunch of checks and it’s possible that we could only cut off a fraction of the number of polygons (after all, the door itself is not an obstacle for either visibility check, or even more so, nor it is for frustum). Compare to case in point: one command is issued - and the whole room is excluded from visibility. “Not bad,” you’d say, “but how would the renderer find out? After all, we performed all our operations on the server and the client does not know anything about it.” And here we go back to the question why there can’t be more than 256 zones. The point is, information about all of zone visibility is, likewise, packaged in bit flags (like PVS) and transmitted to the client in a network message. Dividing 256 bits by 8 makes 32 bytes, which generally isn’t that much. In addition, the tail of this information can be cut off at ease if it contains zeroes only. Though the payback for such an optimization would appear as an extra byte that will have to be transmitted over the network to indicate the actual size of the message about the visibility of our zones. But, in general, this approach justified.
Light_environment traces enter from the back
Source Engine turned out to have a terrible bug which makes the whole areaportal thing nearly meaningless. Numerous problems arise because of it: water breaks down into segments that pop in, well, you should be familiar with all this by now. Areaportal cuts the geometry unpredictably, like an ordinary secant plane, but its whole point is being predictable! Whereas areaportal brushes in Source Engine have absolutely no priority in splitting the map. It should be like this: first, the tree is cut the regular way. And when no suitable planes left, the final secant plane of areaportal is used. This is the only way to cut the sectors correctly.
Modern problems
The second optimization method, as I said, is increased size of the final leaf akin to QUAKE3. It is believed that a video card would draw a certain amount of polygons much faster than the CPU would check whether they are visible. This come from the very concept of visibility check: if visibility check takes longer than direct rendering, then well, to hell with this check. The controversy of this approach is determined by a wide range of video cards present at the hands of the end users, and it is strongly determined by the surging fashion for laptops and netbooks in which a video card is a very conditional and very weak concept (don’t even consider its claimed Shader Model 3 support). Therefore, for desktop gaming machines it would be more efficient to draw more at a time, but for weak video cards of laptops traditional culling will remain more reliable. Even if it is such a simple culling as I described earlier.
Decompression sickness simulator
Although I should also mention the principles of frustum culling, perhaps they are incomprehensible to some. Cutoff by frustum pyramid is actually pure mathematics without any compiler calculations. From the current direction of the player’s gaze, a clipping pyramid is built (the tip of the pyramid – in case someone can’t understand - is oriented towards the player’s point of view and its base is oriented in the direction of player’s view). The angle between the walls of the pyramid can be sharp or blunt - as you probably guessed already, it depends on the player's FOV. In addition, the player can forcefully pull the far wall of the pyramid closer to himself (yes, this is the notorious “MaxRange” parameter in the “worldspawn” menu of the map editor). Of course, OpenGL also builds a similar pyramid for its internal needs when it takes information from the projection matrix but we’re talking local pyramid now. The finished pyramid consists of 4-6 planes (QUAKE uses only 4 planes and trusts OpenGL to independently cut far and near polygons, but if you write your own renderer and intend to support mirrors and portals you will definitely need all six planes). Well, the frustum test itself is an elementary check for a presence of AA-box (AABB, Axis Aligned Bounding Box) in the frustum pyramid. Or speaking more correctly, this is a check for their intersection. Let me remind you that each branch has its own dimensions (a fragment of secant plane bound by neighboring perpendicular secant planes) which are checked for intersection. But unfortunately the frustum test has one fundamental drawback - it cannot cut what is directly in the player’s view. We can adjust the cutoff distance, we can even make that “ear feint” like they do in QFusion where final zFar value is calculated in each frame before rendering and then taken into account in entity clipping, but after all, whatever they say, the value itself was obtained from PVS-information. Therefore, neither of two methods can replace the other but they just complement each other. This should be remembered.
I gotta lay off the pills I'm taking
It seems that we figured out the rendering of the world and now we are moving on smoothly to cutting off moving objects... which are all the visible objects in the world! Even ones that, at te first glance, stand still and aren’t planning to move anywhere. Cause the player moves! From one point he still sees a certain static object, and from another point, of course, he no longer does. This detail should also be considered. Actually, at the beginning of this article I already spoke in detail about an algorithm of objects’ visibility check: first we find the visible leaf for the player, then we find the visible leaf for the entity and then we check by visdata whether they see each other. I, too, would like to clarify (if someone suddenly does not understand) how each moving entity is given the number of its current visible leaf, i.e. directly for entity’s its own current position, and the leaves themselves are of course static and always in the same place.
Ostrich is such an OP problem solver
So the method described above has two potential problems: The first problem is that even if A equals B, then, oddly enough, B is far from being always equal A. In other words, entity A can see entity B, but this does not mean that entity B see entity A, and, no, it’s not about one of them “looking” away. So why is this happening? Most often for two reasons: The first reason is that one of the entities’ ORIGIN sit tight inside the wall and the Mod_PointInLeaf function for it points to the outer “zero” leaf from which EVERYTHING is visible (haven’t any of you ever flown around the map?). Meanwhile, no leaf inside the map can see outer leaf - these two features actually explain an interesting fact of an entire world geometry becoming visible and on the contrary, all objects disappearing when you fly outside the map. In regular mode, similar problems can occur for objects attached to the wall or recessed into the wall. For example, sometimes the sounds of a pressed button or opening door disappear because its current position went beyond the world borders. This phenomenon is fought by interchanging objects A and B or by obtaining alternative points for the position of an object, but all the same, it’s all not very reliable.
But lawyer said that you don't exist
In addition, as I said, there is another problem. It come from the fact that not every entity fits a single leaf. Only the player is so small that he can always be found in one leaf only (well, in the most extreme case - in two leaves on the border of water and air. This phenomenon is fought with various hacks btw), but some giant hentacle or on the contrary, an elevator made as a door entity, can easily occupy 30-40 leaves at a time. An attempt to check one leaf (for example, one where the center of the model is) will inevitably lead to a deplorable result: as soon as the center of an object will be out of the player’s visibility range, the entire object will disappear completely. The most common case is the notorious func_door used as an elevator. There is one in QUAKE on the E1M1. Observe: it travels halfway and then its ORIGIN is outside the map and therefore it must disappear from the player’s field of view. However, it does not go anywhere, right? Let us see in greater detail how this is done. The simplest idea that comes to one’s mind: since the object occupies several leaves, we have to save them all somewhere in the structure of an object in the code and check them one by one. If at least one of these leaves is visible, then the whole object is visible (for example, it’s very tip). This is exactly what was implemented in QUAKE: a static array for 16 leaves and a simple recursive function SV_FindTouchedLeafs that looks for all the leaves in range hardcoded in "pev->absmins" and "pev->absmax" variables (pev i.e. a Pointer to EntVars_t table). absmins and absmax are recalculated each time SV_LinkEdict (or its more specific case of UTIL_SetOrigin) is called. Hence the quite logical conclusion that a simple change of ORIGIN without recalculating its visible leaf will take the object out of visibility sooner or later even if, surprisingly enough, it’s right in front of the player and the player should technically still be able to see it. Inb4 why one have to call UTIL_SetOrigin and wouldn’t it be easier to just assign new value to the "pev->origin" vector without calling this function. It wouldn’t. With this method we can solve both former problems perfectly: we can fight the loss of visibility if the object's ORIGIN went beyond the world borders and level the difference of visibility for A->B versus visibility for B->A.
In this case, BO Simulator will help you, thanks to which you will be able to test your strategy on history and to trade it in real-time. Characteristics of the BO Simulator. ... BOSS Indicator – profitable Binary Options Signals Indicator. 17. 15131. Future Volume - indicator for binary options trading. Comments: Olufikayo. Free stock-option profit calculation tool. See visualisations of a strategy's return on investment by possible future stock prices. Calculate the value of a call or put option or multi-option strategies. The Binary Options Simulator application is created for those who want to. learn how to earn with the help of a popular financial instrument - binary options. Binary options are so popular because ... Many online brokers offer a binary options simulator and a demo account, where you can practice trading all kinds of binary options for free. There are also options trading simulators that you can find and download that simulate how binary options work but you don’t even have to have an account with a broker to use them. Binary options can be traded a little differently than what we have explained above, and as you might have tried on our “simulator” test. One touch (or sometimes called simply Touch) options are different from classical high-low binary options, but certainly everyone will understand. This time it’s not about the price ending at some, or ...
Excitement About Binary options simulator - TourViet - YouTube
This is how I have traded Binary for the past 3 years. Thank you for watching my videos, hit the subscribe button for more content. Check out our members res... Look Here: https://bit.ly/3iuEyjt - Best Binary Options Trading Simulator - Put and Call Options Can Be Fun For Everyone IQ Alternative was developed in 2012... Check Out This Info: https://bit.ly/3gJjZix - Excitement About Binary options simulator - TourViet Binary alternatives demos differ from broker to broker. No... How To Make $75 an Hour Online 2020 Nadex binary options 2020 My #1 Income Earner 👉 👉http://bit.ly/BuildWealthAndCredit #1 Youtube Course Here (HIGHLY RECO... FOREX ══ http://tiny.cc/G-Forex Binary Options ══ http://tiny.cc/G-BinaryOptions Investing Strategies ══ http://tiny.cc/G-Investing