Jump to content


  • Content Count

  • Joined

  • Last visited

Blog Entries posted by EricBall

  1. EricBall
    In my life I've undertaken many personal projects and there are a few I would qualify as failures.  After working on my latest MAME cabinet project I realized I had learned some important lessons from those projects.  In the hope that maybe others can learn from my mistakes...
    Decades ago I had an idea for a circuit which would remove Macrovision copy protection from an analog video signal.  IIRC it was based around a sync separator and I was positive it would work.  So I ordered the parts from Mouser, wired everything up on perfboard, connected to my DVD player and... nothing.  It was at that point that I realized I did not have the equipment necessary (e.g. a digital storage oscilloscope) to determine why it was failing.
    The lesson was to plan for failure and before starting the project make sure you have the tools necessary to debug any issues.  (In particular any hardware project.)
    For example, I considered trying to build a portable Wii (Wiiboy).  However, I could easily wind up with the same problem - something doesn't work and I don't have the tools to debug the problem.  (Especially since a big part of the project is to physically cut the Wii PCB, so there's a very real risk of something going wrong.)
  2. EricBall
    I watched Babylon 5 when it was first on TV and I have every episode recorded on VHS.  One of these days I'll digitize them so I can enjoy them rather than the "widescreen" versions.  Babylon 5 was great TV - each episode and season told a story which was then part of the story told by the entire series.
    But a reboot doesn't compute IMHO.  Part of the reason B5 was great TV was JMS.  He had the vision for the entire series, the backstory, and the ability to change plans when required due to cast, production company and whether there would be a next season.  JMS also had the experience to know how important it is to come in under budget (something which doomed Firefly).
    So JMS is being given the green light to do a reboot of B5.  But a big part of B5 was the knowing that each episode was part of the larger whole - even if you couldn't see it yet.  Simply retelling the same story with new actors and better SFX would remove much of the enjoyment as you'd know how the story is going to end before it even started.  But if JMS's plan is to tell a different story, then it's not really Babylon 5.
  3. EricBall
    An arsTechnica staffer apparently overheard someone saying, "I'm working on the thing after the Switch." and wrote a whole article about it (which I read, although it's a lot of empty musings).  Of course, it's no surprise that Nintendo would be working on a successor to the Switch.  For home consoles they have a pretty regular 5-6 year cycle.  The Switch was released back in 2017 (how time flies) so I'd expect a successor in the next 18 months.!?
    But it got me to thinking - if I were coming up with a successor to the Switch, what would I build?  Nintendo has sold over 73 million Switch but also almost 16 million Switch Lite.  To me that says there's a real demand for a portable system, so I'd stick with the same form factor as the Switch Lite.  But have a dock just like the Switch which would allow the system to be connected to a TV.  In addition, single player offline long-form games are one place where the traditional sale model (versus the "free to play" model) work; and theses games also lend themselves to portable play.
    This also means Nintendo wouldn't be directly competing with Sony & Microsoft as the system would be advertised as a portable system you can connect to your TV versus a home console which is also portable.  However, the successor to the Switch will be somewhat competing with the Steam Deck.
    One big question is whether the successor to the Switch will be backwards compatible with the Switch.  Nintendo has a history of maintaining backwards compatibility to the previous generation with three exceptions: the Super NES, the GameCube (N64 was cartridge based and Nintendo finally made the transition to disc based media), and the Switch (single screen vs Wii U / 3DS).  So I think there is very good chance the successor will be backwards compatible.  However, this also means Nintendo is somewhat tied to NVidia (versus AMD).  On the plus side, Nvidia already has successors to the Tegra X1 used in the Switch.  The most modern one which is currently being manufactured is the Xavier - which looks like a decent upgrade from the X1 - double the number of CPU cores and GPU units and both running at double the clock speed - which would make it about 4 times as powerful.
    So if I were Nintendo, here's what I would do for the "Super Switch"
    - NVidia Tegra Xavier based, with Switch compatibility
    - same physical design as the Switch Lite
    - same OLED screen as the new Switch (for better visibility outdoors)
    - dockable (via USB-C, also used for charging), which adds HDMI, LAN & USB ports
    - compatible with Switch, Wii, and other Bluetooth and USB controllers
    Note: I'd stick with the same 1280x720 resolution for the built-in display with 1920x1080p60 for the HDMI output rather than 4K.  Why? Because Nintendo understands gameplay trumps graphics.  If the Super Switch had a 1920x1080 display and output 4K UHDTV that would use up much of the performance improvement of Xavier over X1.
    Note 2: It will be important for Nintendo to provide a "system seller" on launch & encourage second & third party developers to create games which take advantage of the Super Switch.  Both the DSi and New 3DS had a very small number of exclusive titles.
    Note 3: Yes, I know many of these ideas are the same as the "Switch Pro" rumors - however I actually wasn't aware of them before I did this, so I might actually be more right than I thought.
  4. EricBall
    After 135 hours of playing Breath of the Wild I have defeated Ganon and finished (but not completed*) the game.  It was a lot of fun, but I'm not planning on replaying it in the near future and I certainly have no desire to buy the DLC and play through a modified version of the game.  
    One of the parts of BOTW I loved is Zelda's story revealed through the memories and her and her Father's diaries.  Unlike the Champions who chose to be warriors and then accepted the role of Champion, Zelda is instead told that she has a destiny she must fulfill - except everything she tries denies instead of confirming that destiny.  It's only after Ganon defeats the Champions and Link that she her power reveals itself.  It's a tragic tale - but one with ultimately with a happy ending.
    * I haven't completed every quest, found & completed every shrine, found all 900 Koroks, or the many other tasks which would be necessary for me to claim I've completed the game.
  5. EricBall
    Earlier this summer I heard an orchestral medley of Zelda themes and it reminded me that I hadn't bought Breath of the Wild.  When it first came out I didn't have a Switch and couldn't justify buying one just to play Zelda.  However, my son got one a few years back for Christmas so now I just needed to spend the $$ to get the game.  So I picked it up and I've been playing it since July 1st.  I haven't finished it yet, I still need to grind a while to get Ancient Armor and upgrade it before taking on the castle and Ganon (although I suspect this isn't required).
    I can understand why many people love this game.  However, it's not without its flaws.
    One of the big complaints from many players is weapon durability.  I will admit in the early game there's a significant risk to having your only weapon break mid-way through a battle.  But later in the game it's more of an annoyance. 
    My bigger issue is not being able to keep all of the weapons I want to.  I'd like to be able to store weapons I'm not planning on using but might want to use later.  Right now I've got a lot of elemental weapons filling up my inventory.  They're cool to use and great in certain situations (e.g. fire weapons vs ice monsters).  However, their durability isn't great and they have limited world spawns.  So they sit in my inventory.  Maybe I should just embrace the temporary and use them (and figure out how to use the elemental rods effectively).
    Related to weapon durability is the blood moon.  I think the design decision behind the blood moon was to ensure players had a way to accumulate weapons and materials in the late game.  I'm kinda doing this now as I need to kill Guardians to obtain 90 ancient gears to buy and then upgrade Ancient Armor.  However, the blood moon takes away my incentive to try to clear out the various monster encampments.  In fact, during the early game it's often better to avoid conflict to preserve weapon durability & arrows.
    The game sometimes takes "let the player figure it out" too far IMHO.  Would it have been so bad for the old man to tell Link to avoid the disabled Guardians?  "You've seen the Guardian carcasses?  Well some aren't completely inactive, it's best to run away if you find one - you won't be able to damage it."  OTOH one advantage of picking up this game years after release is other players have done the investigation and datamining to figure out almost everything about the game.  So this means I don't have to stumble around trying to figure out the cooking mechanic, what weapons are the most durable, or where a particular memory is located.
    But back to the grinding.  Grinding is almost unavoidable in an open-world game and BOTW is no different.  For completists finding all 120 shrines, all of the Koroks, all of the treasure chest, and obtaining & upgrading all of the armor can be quite the grind.  In BOTW upgraded armor provides bonuses in addition to simple damage protection.  So having armor which makes you unfreezable, unshockable or immune to fire can be a great benefit.  And for those upgrades the required items aren't difficult to obtain. 
    However this isn't the case for Ancient Armor, which provides additional defence against Guardians (which are one of the strongest enemies) and when upgraded provides a bonus when using ancient weapons (which are particularly effective against Guardians).  So if you're going to be taking on Guardians you're going to want to have upgraded Ancient Armor.  But to obtain and upgrade Ancient Armor you need ancient materials (ancient gears in particular - 60 to obtain, 30 to upgrade) and you need to defeat Guardians to obtain ancient materials.  (Yes, it is possible to loot dead Guardians to get ancient materials, but not enough to obtain 60 ancient gears.)  So you need to attack & defeat Guardians without Ancient Armor in order to get Ancient Armor to make it easier to defeat Guardians.  Ugh!
    None the less, I'm really enjoying the game.  OTOH I don't think I'm enjoying it enough to buy the DLC.
  6. EricBall
    A few weeks ago a YouTube video about the G-Boy kit caught my interest.  This isn't a portable cobbled together from old smartphone components, but an actual Wii PCB, cut down to remove unnecessary components & to make in smaller, then wired up to custom PCB to provide battery power, controls, LCD interface and replace the DVD drive with an SD card, and finally put in a custom case with the LCD etc.  Of course, many Wii titles would be problematic without the Wii remote, but the Wii can play GameCube games natively not to mention emulators and other homebrew.
    However, this is definitely not an easy project and the more I thought about it the more negatives I saw.  First the actual build would require several tools I don't have, increasing the cost.  New tools also means new skills, which increases the risk of failure.  The possibility of catastrophic failure (or at least failure beyond my ability to troubleshoot & repair) is also very high.  So there's a high risk of failure and the end result, while cool, doesn't provide me with anything I don't have already except for portability.  Finally, the hobbyists who created the kit didn't seem to be selling them anymore, so I'd need to do a lot more DIY as well.
    But it got me to thinking.  What I kinda / sorta want is something like a GBA with a big screen which could emulate GB/GBC/GBA/NES/SNES and other classic 8 & 16 bit consoles.  I knew these devices existed, but I needed to do some research to see which ones would satisfy my requirements and how much they would cost.  Fortunately there's some YouTube channels which focus on these devices and do a great job comparing them.  The challenge is there are new devices being offered all the time so what was top of the heap a few months ago may now be an also ran (or now that more people have them, the flaws have been discovered).  However, for me there is a clear winner - the
    PowKiddy RGB10 Max.
    One of the big advantages it has over similar devices is the 5 inch screen.  While the 16:9 aspect ratio isn't required for classic consoles, it's the same as a 4 inch 4:3 screen (or a 4.4 inch 3:2 screen) - which is still larger than the majority of other devices.  The processor seems to be powerful enough for my requirements and the reviews are fairly positive about the controls.  The two negatives are the single off-center speaker and the screen not being particularly bright.  It also seems like the internals and software were cloned from the Odroid Go Super (but given the purpose of the device is to play copied games I'm not going to feel guilty).  And it's only C$150 shipped from China.
    However, while I want it and can afford it . . . I'm having trouble justifying it.  
    I have multiple other options to run emulators on devices I already own.  (I just need to take the time & effort to get everything installed & configured.)  So I don't need it to play the games. While portability is nice, I don't actually regularly need something portable in order to play games (e.g. commuting by public transit).  Plus I already have several portable devices which I could play games with. Finally, my main constraint is free time, not ways to spend that free time.
  7. EricBall
    The base software install and configuration has been completed!  Now I just need to build the final cabinet (current roadblock is persuading my son to work on the control panel artwork).  For those who might be interested, here is the "top 40 classic vertical arcade games" which are playable:
    I'm hoping I will be able to track the number of plays for each game.  I suspect there will be few which get played a lot and a few which aren't played.
  8. EricBall
    Not to be a wet blanket, but I predict failure (based upon the info in the article).
    IMHO the main problem going to be processing power.  A decent gaming PC has a CPU & GPU far more powerful than the Switch and if Valve tried to squeeze that into a portable system the battery life would be very short.  But downgrading the CPU & GPU to a level where battery life if reasonable would make the system underpowered for anything more than casual 2D games.
    Consoles like the Switch can get away with a lower powered CPU & GPU because developers learn how to do more with less or rework their game to fit within the system limitations.
    Other problems:
    Basing the SteamPal on Linux because While Steam supports Linux (and MacOS) this isn't true of the majority of games available through Steam. Graphics performance on Linux still lags Windows. Fewer PC games support controllers effectively vs keyboard & mouse Price - although not stated, I don't think this is going to be a cheap device  
  9. EricBall
    I got the Raspberry Pi 3A+ last week and the HDMI to DVI adapter finally showed up on Friday.  So I immediately hooked everything up and started to redo the setup (fortunately I'd tried to keep notes for most of the config changes).  I had powered the Zero off the USB hub built into the monitor which meant I could turn both on and off with the monitor's power button.  At first I did the same with the 3A+, but I got occasional "under voltage detected" errors.  At first I ignored it as it didn't seem to have any impact, but then RetroArch mis-recognized the Xinmo controller and I knew a change was necessary.  So I switch to using a standard wall wart and started over.
    But I really wanted to be able to turn both the monitor & Pi on and off with one switch - ideally with the monitor's power button.  If I couldn't use the built-in USB hub, maybe I could use the 12V jack used to power a speaker.  In fact, before I bought the USB powered speakers I'd looked into some 12V audio boards for the RPi, hoping there would be a reasonably priced option (ha!) which would also power the Pi.  What I wanted was something cheap which would convert 12V to USB power.
    Then it hit me - cars are "12V" (not really), but I bet I could crack open a cheap (dollar store cheap) car lighter USB adapter, solder on a cable with the correct barrel connector and have a probable solution.  A couple of hours later I had done just that - and it worked perfectly!
    Moving up to the 3A+ has also increased the number of potentially playable games - although this time I'm starting out with just 44 from a combination of "best of" lists.  So I need to go through those, make sure they work (near) perfectly, then make up the media for the front end.  I also need to finalize the control panel artwork (I've decided to just use heavy-duty vinyl, so no need to try to cut & bend plastic) and then I can build the final cabinet!
  10. EricBall
    The other day I learned lr-mame2000 doesn't save high scores.  Part of me thinks I should just accept it.  But the more I play the more I want to have the high scores saved over time.  Being on or first on the high score table is part of the arcade experience.  (Ideally I'd love it if Libretro saved the entire system state on exit so it wouldn't have to go through the initialization sequence.)  And while lr-mame2003 does support high scores, it needs more CPU.  So either I'd end up cutting my list of playable games even more or I need to get another RPi - and I'd rather not spend even more $$ on this project.
    OTOH, prior to making my barcade I was using the Raspberry Pi Zero to play back DVD rips (no problem with the MPEG-2 decoder licensed/enabled); so in the long term I'd want to buy a second RPi anyway.  (Heck, I suspect eventually I'll get a third to hook up as a retro console.)
    So two good reasons won over my frugal nature and I bought a Raspberry Pi 3 A+, which fits my requirements perfectly.  I've ordered 
    Of course now I will need to go back through the list of games and see if there's any other "best of the best" which are now playable.
    For the actual build the current bottleneck is creating artwork for the control panel.  Much to my relief others have confirmed vinyl is durable enough for the control panel and it's not necessary to cover it with plexiglass or lexan.  This great because I suspected it would take me several tries to successfully bend & cut holes in the plastic (plus I'd need to buy a bit for my router).  My plan was to use macro photos of quarters as a background.  However, it's amazing how scratched a quarter can be even if it looks "mint" under a magnifying glass.
  11. EricBall
    Focusing on the "best of the best" games was a very good idea. It meant I only had to do marquees, attract videos and control panel diagrams for 19 games rather than over 100.
    This is a screenshot of my Attract Mode theme.  The marquees are instead of the more typical text game list.  And when the game is selected it shows a video of the game's attract mode.  The bottom is a basic diagram of the cabinet control panel to show which controls are used for what in the game.

    From a software perspective the system is at the 90% finished stage:
    Go back through the games list and maybe add a few more games. Due to MAME romset differences I only have screenshots rather than videos for a few games. See what tweaking can be done to the boot-up & game start sequences to make them quicker & avoid text displays.  
    However making the final cabinet is almost more important.  But I'm really struggling with anxiety about having everything go right.
    At least it's playable - so I'm going to go play some games.
  12. EricBall
    The first pass through the vertical games has been completed!  I've marked a little over 100 games as "perfect - include".  So now I'm doing a second pass.  My original thought was to have a second look at the "perfect - maybe" and "playable, 50 fps" (where MAME was skipping some frames) games, but now I'm thinking maybe I might want to whittle down even the main list.  Is it better to have more games to chose from or to try to only include those game which will probably get played?
    It was suggested to me to use the "All Killer, No Filler" game list rather than going through the games myself.  While I would have still needed to go through that list to figure out which games would work with my setup, I'm now thinking there might be value in using it to decrease the size of my list.
    OTOH, having seldom played games on the system isn't a bad thing; although each game will take some time & effort to find and create the assets (e.g. marque, snapshot) for the front-end.
    Update - My wife has stated that more is not better and I should be ruthless in my second pass and, at least to start with, only include "the best of the best" games.
  13. EricBall
    Unfortunately the cardboard box didn't really have the strength to hold he monitor in place.  But I wasn't ready to build the final cabinet (i.e. spend $$ on materials).  Fortunately I was able to build a replacement using a 12x24 shelf cut along the diagonal and some Ikea scraps which were the perfect length.  I used some "hockey tape" to decorate the cut edge.  (Not sure what I'm going to do on the final version as I don't feel like spending the $$ to buy the slot cutter to use T moulding.)
    Then I one of the local 'cade shops decided to have a sale, so I picked up a Sanwa joystick for half price along with buttons, a controller & wiring.  This past weekend I made a simple control panel out of a scrap piece of 3/4" MDF - both to mount the buttons so I could start using them, but also to test out my woodworking skills for the joystick mount.  For the final version I'm planning on having a 1/8" top-cover to hide the mounting plate & buttons.
    So far it's worked out great except I had planned to use the player buttons to both insert a coin and start the game.  Unfortunately some games don't like this configuration, so it looks like I'll need to have a dedicated coin button. 
    I've ordered Logitech S150 USB speakers and they should be showing up this week next month.  I lucked out as the cheap "USB powered" speakers I was planning on using still used a headphone jack for audio rather than USB!  (This actually turns out to be quite common for "USB speakers".)  Before I found the S150 I was worried that I'd have to go to a more costly option.
    I'm still going through the games.  There's a lot of games which are playable, but not at full FPS.  While this doesn't impact the gameplay, it also means the RPi doesn't have the CPU power for good audio.
    I'm also mulling over how to finish the cabinet.  While I'd love to get some custom vinyl made, I'm not sure of the cost.  Plenty of time to figure that out later!

  14. EricBall
    In the words of Sinstar, "Beware, I live"

    As I mentioned in the previous post, I started over with lr-mame2000 (MAME 0.37b5 as a Libretro core) on RetroPie 4.7.1 (current).  While mame4all-pi is supposed to be faster, it doesn't do me any good if it doesn't support rotation.  It also became obvious that mame4app-pi is basically an unsupported hack.
    Once I started over I tried the recommended solution of disabling the internal "soundcard" without success, likely due to the same problem of the USB headset being "card 1" rather than "card 0".  I then re-enabled the internal soundcard and instead configured the system so the USB headset was "card 0" - and it worked!
    So this morning I made a stand out of a cardboard box (~20 degree tilt) and tweaked the libretro config to rotate and fill the screen at native resolution (along with rotating Emulationstation).
    So now the task is to go through ~450 games to see what's playable and what's worth playing.  After that I can focus on setting up the front end.
  15. EricBall
    While researching for whether anyone else had found a solution for my audio issues, I discovered that mame4all doesn't support screen rotation.  Bogus!
    So now I'm going to try to use lr-mame2000 (the same version the MAME core code, but built on top of the Libretro platform) on the current release of RetroPie (4.7.1) - hopefully I won't have as many issues (or it won't be such a headache to resolve them).
  16. EricBall
    My current challenges are with getting the audio working - not something I expected, so it's fortunate I realized I could use the USB headset.  I've been working with RetroPie 4.5 as RecalBox is locked down by using a read-only partition.  (So I can't rotate Emulation Station.)
    Audio on Linux is handled by ALSA.  It provides a lot of flexibility in order to handle the breadth of soundcards - which means a lot of complexity.  Unfortunately, there's not a lot of good, authoritative, current, how-to documentation.  ALSA also needs to handle three requirements - first is telling ALSA about the soundcards in the system.  Fortunately the automatic detection & configuration is working in this case (although not without a few wrinkles).  Second is the ALSA API which applications use.  Finally there's the part in between - getting the applications (e.g. mame4all-pi) to actually use the soundcard (USB headset).
    mame4all-pi uses the "default" PCM "device" (via a hardcoded string).  Unfortunately, the automatic configuration lumps both the internal Raspberry Pi soundcard and the USB headset into the "default" PCM "device".  Disabling the internal soundcard (via the boot config.txt) still doesn't work because the USB headset is still card 1 (rather than card 0).  After much searching, I finally found instructions on how to renumber the two so the USB headset is card 0 and the internal soundcard is card 1.
    The next problem is mame4all-pi is hardcoded to use 44.1kHz sampling, while my USB headset only supports 48kHz.  Fortunately ALSA supports plugins to automatically resample as part of configuring the "default" PCM "device".  The next problem is the USB headset doesn't support mono - again fixable via an ALSA plugin.  Unfortunately, mame4all-pi is now throwing another ALSA API error...
  17. EricBall
    While I have made some progress, I've also encountered a bunch of frustration.
    The progress is mostly on the hardware side where I realized I could plug the Raspberry Pi back into the monitor's USB hub with a old USB A to B cable via the USB B jack to micro USB OTG cable.  Then I had the second realization I could simply plug in a pair of USB headphones for audio (and use cheap USB speakers in the final build).  While the USB speakers won't be as loud as ones powered by the 12V jack on the monitor - I wasn't finding any cheap 12V amplifiers for the RPi.
    The software, however, has been a mess of frustration.  The idea of this project is to rotate the monitor and configure it to play vertical arcade games.  You'd think I wouldn't be the first person to have this idea and it would be a simple configuration option.  While MAME has the support built-in, neither Lakka nor the front end used by other prebuilt system images (EmulationStation) include this function.  Attract-Mode, another front-end available for the RPi, has this function - but it's offered as an add-on to RetroPie rather than as a dedicated system image.  The other option is to rotate the display via a configuration option, but I've heard that has a significant performance impact.
    For the Raspberry Pi there are several prebuilt system images based around the Libretro emulation library:
    Lakka - uses the RetroArch front-end which looks a lot like the Sony XMB interface.  No support (AFAIK) for rotation.  Some quirks (e.g. image sets the HDMI option to CEA (TVs) which causes problems with monitors (DMT), conflicts between Colecovision and MSX emulators). Recalbox - uses the EmulationStation front-end which is the typical list + image view.  No support (AFAIK) for rotation.  Basic image has a 3GB FAT32 partition but only 756MB of data which then causes the initial setup to fail on a 4GB microSD card.  Resizing the partition to 800MB works around the problem.  On the plus side it includes a bunch of games with non-commercial licenses and has some nice menu music. RetroPie - uses EmulationStation by default, but has the option to install Attract-Mode.  MAME4ALL doesn't work on most recent version with non-HDMI audio, okay with older version.  Haven't figured out how to get USB audio working.  (Although maybe I can get the necessary info from the Recalbox image...)  
    Update - turns out EmulationStation can be rotated via a command line option.  Unfortunately Recalbox runs from a read-only filesystem so I can't add it.  So my current focus is on getting USB audio working on RetroPie.
  18. EricBall
    There's a saying which goes something like "progress is seldom made in a straight line" - which basically means you can't really anticipate what you need to do until you've started.  But if you're wise you'll minimize your losses.  For me that means spending time rather than $$, which is why I am forcing myself to work out the software before I spend too much on hardware.
    Last night I plugged the RPi0w into the monitor (I did buy a mini-HDMI to DVI-D cable as I couldn't assume that would work) and spent a bunch of time trying to figure out why the monitor wouldn't display anything.  It turns out Lakka sets the HDMI to CEA (TV timings) rather than DMT (monitor timings).  This immediately soured me on continuing to use Lakka (which I had started to set up for emulating various consoles) for testing.  This probably wasn't a bad idea as the Lakka front end isn't as configurable, so I almost certainly wasn't going to be using it in the final build.
    Okay, so back to the drawing board - which system image to use?  To make a long story short, I decided to go with RetroPie.  It may not be the "best" system image (one of the reasons I was using Lakka is it's minimalist ethos), but it's got decent community support.  So if / when I need help I suspect I'll get it.
    But going through the docs it recommend for RPi0 to use mame4all (0.37b5) rather than lr-mame2003 (0.78).  Which mean I need to re-do the work I've done in putting together the vertical collection.  Sigh
    So I've re-imaged the microSD card with RetroPie, now I need to get that working & log in to get the xml / dat file.
  19. EricBall
    Several years ago I rescued a number of old 4:3 LCD monitors my employer was discarding, including several particularly nice 20" 1600x1200 Dell 2007 FP.  My plan was to use them to create vertical monitor MAME cabinets.  But having learned from past projects, I resisted doing anything on the hardware side until I'd figured out the software side.  And then, like many of my projects, that's where it waited.  I'd occasionally give the idea some thought, but never really do anything serious.
    But more recently I've started giving trying to work out a plan.  The basic idea is to use a Raspberry Pi Zero as the CPU, powered off the monitor USB ports.  The monitor also has a 12V power port which could be used to power speakers - but that's hardware so something for later.
    From a software side it appears there are a few different front ends which could serve.  Basic idea is to select game via a very simple grid which plays attract mode videos.  This appears to be doable.
    But that brings up the question - what games?  The current plan is for a minimalist control panel - joystick plus two or three buttons (depending upon what the games require).
    I already have Lakka on an SD card for my Pi0w which has MAME 0.78 (aka mame2003).  So I downloaded the Windows version, generated the XML file and filtered it by vertical monitor and original games.  The plan is to then work through that list and try to figure out what works and what doesn't.
    There are 700 games....  this might take a while...
  20. EricBall
    This is the result of think exercise to design a 2-D GPU similar to those used by 4th generation consoles (e.g. SNES, Genesis, TG16) but at HDTV resolutions.  Rule of thumb is to make it easy to program (i.e. minimum updates), while still being flexible.
    Output is 1280x720 @ 60fps.  For reference, this has a 22.2usec line interval and 30 lines of VBLANK.
    GPU contains internal 2.5Kbyte RAM for two 1280 x 8 bit line buffers (one is written while the other is read), reset to $00 at start of line.
    GPU contains a single 256 x 24 bit CLUT (16 palettes of 16 colors, 24 bit RGB).  
    GPU is connected to 1Mbyte 10ns RAM addressed as 8192 pages of 64 x 16bit words.  (Note: for sanity all data is little-endian, so bit 0 of byte 0 is bit 0 of word 0.)  GPU RAM is copied by DMA during VBLANK (up to 1024 pages per frame).  Page $0000 is typically set to all $0000.  DMA to pages $1FF8 - $1FFF also updates GPU registers / CLUT.
    GPU registers: $1FF8 [0..47] CLUT [0..31] stored in packed format $1FF8 [48..51] layer register [0..3] $1FF8 [52..63] not used $1FF9 [0..47] CLUT [32..63] $1FF9 [48..55] offset register [0..7] $1FF9 [56..63] not used $1FFA-F [0..47] CLUT [64..255] (32 entries per page) $1FFA-F [48..63] not used layer register [0..12] Zone list starting page number [13] not used [14] color 0 is 0=transparent, 1=opaque (taken from CLUT by palette) [15] zone type is 0=sprite, 1=tile offset register [0..7] signed Y position offset [8..15] signed X position offset Rather than have a single table of sprite positions etc,  the GPU has 4 independent layers.  Each layer is described by a list of zone entries.  Each zone entry points to a list of tiles or sprites for 1 to 16 lines.  While this is more complex from a game programming perspective, it adds significantly more flexibility and dramatically increases the number of sprites the GPU can display.
    The offset register is used to shift the position of multiple sprites by the same amount.
    A single sprite / tile graphics block is 16 x 16 pixels and 4 bits per pixel, which is exactly 64 x 16 bit words = 1 page.  Color 0 is either transparent or opaque depending upon the layer register.  Pixels are stored in little endian raster order (i.e. bits 0..3 are top left pixel).
    Tile Zone entry (48 bits / 3 words each, list may extend over multiple pages) [0][0..11] Tile List page number [0][12..15] 16 - number of lines in zone [1][0..11] tile graphics block offset [1][12..15] start line [2][0..3] start pixel [2][4..9] start tile (word offset of first tile in Tile List page) Tile List entry (16 bits / 1 word each, list may extend over multiple pages) [0..11] graphics block index (added to graphics block offset to give page number) [12..15] palette If number of lines in zone + start line > 16 then next graphics block will also be read.
    Sprite Zone entry (32 bits / 2 words each, list may extend over multiple pages) [0][0..11] Sprite List page number [0][12..15] 16 - number of lines in zone [1][0..11] sprite graphics block offset [1][12..15] not used Sprite List Entry (48 bits / 3 words each, 21 entries = 1 page) [0][0..9] y position (0 - 1023 w/ wrap around 1023->0, 0 - 719 onscreen) [0][10..12] offset register number [0][13..14] y size - 1 (16,32,48 or 64 pixels high) [0][15] y flip [1][0..10] x position (0 - 2047 w/ wrap around 2047->0, 0 - 1279 onscreen) [1][11..12] not used [1][13..14] x size - 1 (16,32,48 or 64 pixels wide) [1][15] x flip [2][0..11] graphics block index (added to graphics block offset to give page number) [2][12..15] palette Graphics blocks for sprites larger than 16x16 are addressed sequentially in raster order
  21. EricBall
    One side effect of trying to install SteamOS is realizing doing the base install & updates while hardwired is a pretty good idea.  However, I did take the advice of JayZ and disconnect the PC from the network for the initial install to avoid having the Admin user tied to an email address.  I've also created individual normal users for each member of the family.
    The actual Windows 10 install & update went smoothly. 
    Then came the big test - I installed Steam, CS:GO and did the timedemo.  Unfortunately with the default "high" settings I didn't hit my desired [email protected] target (although I did get over 120Hz, and significantly better than the sub-60Hz I got on the iMac at low settings.  The bottleneck appears to be the graphics card as it's pegged to 100% and none of the CPU cores are.
    On the one hand I'm disappointed with the result - although it's not like I had any real reason to expect it would meet my target out of the box.  Rather than throwing money at the problem and spending hundreds more to get higher performance I went with the CPU & graphics card with the "best bang for the buck" - which means both cheaper and lower performance.  But I am kicking myself for not going with the GeForce GTX 1660 Super.
    But I've done some more testing and I can get over 170Hz by dropping the quality settings, so now I just need to decide which is more important - pretty or fps, and see which settings get me the most fps for the least visual impact.
    And it's not like it's difficult to upgrade the graphics card if I decide in 6 months I really want to spend the $$.
    Now begins the long process of setting up the various programs I want to use on the new PC, configuring them to work the way I want, and consolidating the files from the iMac and my work laptop.
  22. EricBall
    Okay, I've fixed the look-ahead bug which was causing the ladder issues vdub_bobby was noticing. I think you'll find the leprechauns to be a little smarter now. Leprechaun Level Editor updates as usual.
    Oh, one note. The AI for swinging on ropes is the same as running with the one exception of falling when the player is directly below. (Note - it may be possible to run under a leprechaun and not trigger this behaviour.) So when the player is higher than the leprechaun they will do look-ahead drop-off detection at the end of the rope & automatically reverse direction and go into hunt mode.
  23. EricBall
    YouTuber Tom Scott has just released a 16 episode series on making an app.  (YouTube link behind the Spoiler.)
    I haven't watched the series (although I will), but IMHO the first question you need to ask yourself is what it's going to cost on an ongoing basis and how you plan on paying for it.
    For Slide Tilt Roll, the only ongoing costs were my Apple Developer ID* and a small website & domain name**, but something like Tom's failed messaging app is going to require some kind of server which will need to scale with the number of users along with ongoing support for users.
    In addition, you want your revenue to match your costs.  e.g. When I first came up with the idea for Slide Tilt Roll and the built-in level creator I had the idea of having a website forum which players could use to share levels - a forum which would cost money to be member.  But after some thought I discarded that idea because the revenue model (paid membership) didn't match the expense model (server & bandwidth costs).
    * I've let my Apple Developer ID lapse, so Slide Tilt Roll isn't on the App Store anymore.  While the cost of the ID isn't much, the bigger problem is Apple requires apps to be updated.  In my case that would mean upgrading to the latest MacOS, XCode & Swift and then rewriting my OpenGL fragment shader to Metal (in addition to any changes for the current version of Swift & iOS frameworks).  Too much work for very little payback.
    ** I've since discovered it's nice to have a personal domain so I can create email IDs.
  24. EricBall
    Valve decided to make CS:GO free to play and at the same time add a battle royale mode "Danger Zone". This is great for me as I was looking for a way to scratch my PUBG itch on my 27" iMac rather than playing PUBG on phones.

    But IMHO Danger Zone is better than PUBG because it is only 16 players on a correspondingly smaller map. This leads to quicker, more intense gameplay and shorter games.

    With PUBG, I typically spent the first third of the match (10-15 minutes) looting up, the second third traversing the map or camping depending upon where I am relative to the zone, and only the last third actively looking for conflict with the remaining players. Danger Zone basically trims down the experience, speeding it up and pushing the game into the conflict interval very quickly.

    Other players may "drop hot" and thus spend the beginning of their PUBG game simultaneously looting and in conflict. Even those players should enjoy Danger Zone as it ensures all players are relatively close. They could even select a drop point specifically near other players. The tablet map also makes it more difficult for players to camp & hide.

    The other game design decisions (e.g. money, buy menu & delivery drone, loot in cases, map showing player occupied hexes, drop point selection & how ammo works) can all be learned and tactics modified or developed. None of them make the game unplayable. (And I believe some are even shared by other Battle Royale games, like Ring of Elysium.) Even the lack of lean, crawl & vault aren't deal breakers. And while I've heard complaints that the Source engine is showing it's age and the map is unremarkable, I don't find DZ to be lacking in either case.

    Obviously Danger Zone isn't for everyone. There is no third person perspective, so players who like to peek corners are out of luck. "Skins" also don't include the player model, so players who like to play as team mascots or naughty nurses are SOL.

    The one place I do believe DZ could improve is with the matchmaking process. Currently it appears the game requires all 16 players to Accept before the "waiting room" is started. If even one player doesn't click the Accept button before the 20 second countdown, all players are put back to the matchmaking process. (If a player disconnects after the waiting room has started, the game still continues.) IMHO this is stupid and results in a lot of delays. My suggestion is to start the "waiting room" if a minimum number of players have accepted (e.g. 12). Then while those players are preloading the assets and playing a 2 minute deathmatch, the matchmaker selects other waiting players to fill the game. If they click Accept, they are put straight into the waiting room. Once 16 players are in the waiting room, or after 2 minutes, the main game begins.
  25. EricBall
    I've been feeling minor PUBG withdrawal since my son took his Samsung tablet to college as I'm unwilling to spend the $$ to buy my own tablet for a "free to play" game. Last night i broke down and installed Fortnite on my 27" iMac. I've played about a dozen games so far and noted the following differences:
    The big one is the whole building mechanic. It's hard! I'm not sure I have the free time to be more than a noob. I'm certainly not expecting to win any time soon. Unlike PUBG, it looks like it's going to take a lot of play time to expand beyond the default skin(s) (as I have no intention to spend $). It's also interesting that there is (apparently) no way to even select which default skin you play with. It definitely marks the difference between the payers and the freeloaders. Ammo seems to be less common in Fortnite than PUBG - in PUBG I never ran out of ammo while playing solo, but in Fortnite I don't seem to have enough. Weapon accuracy seems to be much lower in Fortnite, at least for ARs & SMGs; although I might get better with practice. This probably also increases how much ammo I'm using. Fortnite has a lot more weapons than PUBG, but no attachments. So scoped weapons are much rarer in Fortnite. And while higher level weapons typically do more damage, that's not always the case. Consumables like grenades and health packs take a carry slot in Fortnite, so whether to pick them up becomes a trade-off decision. Health packs also seem to be rarer in Fortnite. Maybe it's my level, but players seem to die a lot quicker in Fornite. Half of the field is eliminated before the first circle has completed.

    Given my current abilities, I'm going to define "fun" in terms other than placement and winning. It is an amazingly diverse environment, so right now I'm just having fun exploring.

    2018-11-23 I've put up a short video of me taking down a better player:

    And a couple of complaints: The MacOS client crashes occasionally (although only in the lobby, not in game). I also takes a long while to start up. The logs I've seen have errors relating to my en_CA locale. Some lobby actions change the game mode from Solo to Squad. And because I have it configured for "No Match" (so I can go in the practice area by myself), I won't realize it until I get slaughtered by a squad.

  • Create New...