Pixel Art and Slot Mask Pitch

This and the prior post are all shots from the same late model Arcade CRT, a 29" SVGA Makvision which can scan 30-40KHz and 47-90Hz. I'm cheating somewhat in taking a Metal Slug screen shot and displaying it on a non-15KHz monitor. Metal Slug was roughly 304x224 if I'm remembering right, so ultra low resolution to enable a 60Hz scan-out on CGA CRTs.

Arcade titles over the years with CRTs had a range of monitors and resolutions. Displays would provide a different look depending on the Slot Mask Pitch (effectively the number of dots for a given scanline). In this next shot I'm driving the monitor near it's lowest resolution (at roughly 312 lines), then using H-size and V-size control to enlarge the screen shot as much as possible (showing maybe 250 lines on a 600 line display, so higher slots/line count than the Metal Slug titles). The 29" Makvision is a flat screen and thus suffers from moire patterns more than a curved display. In order to get the classic scan-line look (which is caused by scanning only half the display's lines to get double the frame rate), this shot has the moire reduction turned off (which keeps the beam from having vertical line jitter, which would otherwise cause lines to blend together).

Alternatively I can drive this monitor at 800x600 and then set the moire reduction to blend scan lines. This is to simulate various Arcade games which displayed a relatively higher resolution compared the display slot mask pitch (lower slots/line count, the other extreme). The prior post's image was somewhere in-between these two examples.

Indie vs Real Slug Fest

If you see squares you are doing it wrong. The classic pixel art masters never intended for it to look as ugly as exact square pixels.

Shot from Metal Slug. The shot on the right is from a photo of an arcade CRT monitor.


From Scratch Bug

Inspired by Jaymin's JayStation2 effort and remembering a past life building custom OSs for early x86 machines, haven't been able to avoid the custom OS bug any longer. It starts easy with a harmless QEMU install, followed by a 512-byte bootloader switching to 80x50 text mode and installing a custom 48 character Forth font, then bring up of a Forth assembler/editor, then on to the pain of modern PCI and USB driver bring-up... with the eventual goal of a tiny bootable USB thumb system.

Amazingly refreshing to not have the OS telling you NO. Or the API telling you NO. Modern systems are all about the NO. Systems I grew up on were all about the YES.

Reworking my language from scratch, trying something new, replacing the Forth data stack with a new concept, but maintaining zero operand opcodes. Not sure if the idea will pan out. Dropping everything but 32-bit word support from the language, no need to interop with other software. No more 8/16/64-bit loads or stores (can still just inline machine code if required). Still running in x86-64 64-bit mode, so return stack PUSH/POP/CALL/RET is still a 64-bit stack operation, just don't need that 64-bit address space or 64-bit pointers anywhere else. Trying padding out all x86 opcodes to 32-bit alignment. This makes the 32-bit immediate 32-bit aligned. Wastes space, gives up some perf? Why would I care when most of the CPU side of the system fits in the L1 cache. Dropping paging, dropping interrupts, dropping everything, none of that stuff is needed.

Reworking an editor and binary source encoding. Switching to 32-bit tokens with 5 character max strings. 48 character character-set. Doing something horrible with font design: 1=I, 0=O, 2=Z, 5=S, etc. All caps font with no non-vertical or non-horizonal lines. Actually looks awesome. When you don't have to interop with the NO machine, long symbol names are not required. Color Forth like editors have almost no state. It is magical how they function simultaneously as an editor/assembler/console/debugger/UI/etc. Take the idea of "editor-time-words", words embedded in the source code which are evaluated when the block of source is drawn to the screen. Becomes possible to build out UI tools in the source. Can have an editor-time word read system data and draw in real-time updates in the source code itself. Editor-time words are just like any other word in the system, just color tagged to only be evaluated at draw time.

Minimal systems are a blessing, more so when you have only minimal free time to work on them.


End of an Era

A followup with stills from the why I'm using Fedex from now on post...
The 29" Makvision/Wei-ya 30K-50KHZ XGA monitor. Actually the one I found looks like an early 50khz model in the original box, never used, perfect condition!!! Unable to find any of the 50khz models, was super thrilled to finally find one in this condition,

Then UPS Killed It
The last and only "new" 50khz model I could find, destroyed by UPS. Looks like it was dropped on the corner, or rammed by a forklift, causing the tube to implode. Would have been a huge bang, someone probably got a good laugh, then sent the corpse to it's new owner, me. The loss of a CRT is very sad. No one will ever again manufacture them, they are a superior technology forgotten by the world, far better than even the best low persistence flat panels. To avoid another tragic loss like this, do the world a favor and ship with Fedex instead.

Revision 2015 Tubes : Part 3

Ziphead by Fairlight & CNCD

We Stand Divided by cocoon


Why I'm Using Fedex From Now On

Payed extra to have a 100 lbs UPS package delayed a day so I could ensure I'd be there to sign for it on Friday (was out of town Thursday), very important to me that I get the package before the weekend. This required the hassle to sign up for a UPS account and pay extra to have it delayed a day. Website accepts the money and provides an estimate delivery of 11am - 3pm. Delivery day at home waiting, 3pm rolls around and no package. Use the online chat, let them know something is wrong, double check the online tracking and I don't see a "Out For Delivery" on the tracking webpage. The first online chat I tell them something is wrong, they say no everything is fine. I ask is the package on a local truck for delivery, they say yes, then tell me to wait around until the end of the day which is 7pm. I ask for confirmation, they say yes it will make it by 7pm. Then an hour passes, I use the UPS online chat again, saying the tracking webpage still does not say "Out For Delivery", I tell them again something is wrong, and again they tell me I'm wrong. I ask for a guarantee that the package is in-fact on a local truck with a guaranteed delivery today, I wait, they again confirm and say that for sure I will get the page by 7pm. I wait around until 7pm. Still no package after waiting for 8 hours. I call their customer support line, asking where is the package, they put me on hold for 30 minutes. Then 5 or so more minutes saying I can pick it up tomorrow at a location which is 15 minutes away. They say the package is there at a pickup location which is 15 minutes away but closes at 8pm. With roughly 17 minutes to get there, I speed over, manage to get to the UPS location with a few minutes to spare. Sharing the building with a bunch of other random people who are also waiting for something. 8pm rolls around and they lock us in the building so no one else can enter after close. They cannot seem to find my package, they tell me the person on the phone lied and the page isn't in the building. Person by person, they give excuses of why they cannot get their package. One woman got confirmation that her package was pulled and ready for pickup. Except it was left on a trailer next store, and they cannot get the package until next Monday. Roughly 30 minutes of waiting they tell me the same line. My package is right next store in the warehouse on a truck which cannot be "sorted" until Sunday at midnight. Even UPS has Saturday delivery, they won't bother to just take the package off their truck on the weekend. UPS has managed a rare perfect score in the "ensure your customer will never use your service ever again if they have a choice not too" category!

Finally got the package today, many days late on Monday, as they wheeled it to my door, it sounded like broken glass was banging around in the package, after taking a look inside, it was totally destroyed. Brand new (from 2006) never been opened 29" VGA arcade monitor of specs which are impossible to find anywhere (special 800x600 @ 90Hz tube). Picture tube totaled. Would have made some serious noise when the vacuum imploded, something very obvious. Instead of sending it back to the shipper after they destroyed it, they decided it was better to give me the problem and drop it on my doorstep.


Other CRT Options

29" Makvision CRT SVGA Arcade Monitor
Link: XGaming has these for roughly $500 and around $60 shipping to where I live.
Uses VGA input. Looks like there are three kHz spec ranges depending on version of display: {90 Mhz, 15-40 kHz or 30-40 kHz or 30-50 kHz (model C2929D1), 47-90 Hz, 800x600 max}. The peak kHz model might have capacity for 800x600 @ 80 Hz. Wonder what kind of persistence this display has.

Sony GDM-FW900 24" Widescreen CRT Monitor
Possible to find on ebay. Does {30-121 kHz, 48-160 Hz, 2304x1440 max}. Seems possible to do 960x600 at 160 Hz, and peak resolution around 80 Hz.