• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Changing the Micron Xceed Grayscale CRT Resolution

tt

Well-known member
I think this may require some sort of a hack, so I'm posting here, but maybe this is a simple fix with an extension. One thing that is annoying about the video card is the default resolution is 512 x 341, which is one row off from the standard compact mac resolution of 512 x 342. I saw this a a complaint by an original user of the board and I totally agree. One example of this causing an issue is Hypercard goes into a windowed mode and messes-up its nice full screen mode. Any suggestions on how the resolution can be overridden to 512 x 342? 

 

Trash80toHP_Mini

NIGHT STALKER
That would definitely be a hack. I'd never heard of the case of the missing row of pixels? It makes me wonder if the board needed that smidge of timing to stay in sync with the A/B? That in turn makes me wonder if the scan/retrace timings from porch to porch might be off by a teensier bit that's made up for by dropping that one line?

 

Crutch

Well-known member
IIRC I have read (no idea if this is true) that this is a “feature” to prevent old black and white games, MacPaint, etc. from noting a 512x342 display and assuming it’s a normal 1-bit-per-pixel CRT, then doing direct screen writes accordingly and garbage shows up on the grayscale display. 

I don’t know how to hack the board to lie about it’s resolution, but if there is a particular app that’s bothering you, HyperCard or whatever, it wouldn’t be hard to patch the code to treat anything <= 342 as equal to 342. Probably just need to change a single BNE instruction to BGT, or similar. I might give it a try, any particular version of HyperCard you’re bothered by?

 
Last edited by a moderator:

tt

Well-known member
@Crutch Sorry I didn't get notified of your reply. Yeah, the Xceed card gives a different resolution value to trick programs to think it's a color monitor so that the grayscale aspect will show through. That's a great idea to perhaps hack HyperCard. I think I tend to run a version of 2, could be the latest which I think is something like 2.4. I think the last version of 1.x could also be useful to hack. If you are able to find a way of doing it, that would be awesome.

 
Last edited by a moderator:

Crutch

Well-known member
@tt I found a way to do this in HyperCard 2.1 (the only one I have lying around).

In CODE 42 at offset $45EE there is a call to _EqualRect to compare the stack’s (I think) saved window bounds to (0,0)-(512,342).  If they’re not equal (i.e. _EqualRect returns 0), a BEQ (“BEQ” meaning “branch if zero, i.e. false, not branch if [the rects are] equal!”) at offset $45F2 goes off somewhere else, presumably to activate the “windowed” mode.  By NOPing out that BEQ, I seem to be able to force it to always run in full screen mode.  (Note this does mean always ... even for stacks like the demo “Scanned Images” stack with 2.1 which are intended to be smaller and run in a little window.)

It looks like HyperCard saves the full-screen status somehow, so that once I open a stack with my patched HyperCard, that stack will also open full-screen on an unpatched instance of HyperCard, even on my Xceed-equipped SE/30.

One could presumably patch other versions by breaking on _EqualRects and finding the right one!

I created a ResPatch doc to apply this patch automatically, will upload it in a moment.

 
Last edited by a moderator:

tt

Well-known member
@Crutch That's awesome you found a patch point to force it to run full screen! I don't see the attachment in your post...

Could an alternative way of doing it be to check if the window bounds is (0,0)-(512,342) or (0,0)-(512,341) and return "1"?

 

Crutch

Well-known member
ResPatch is a tool I created recently to apply patches like this; it’s at the Macintosh Garden link I posted above.  The third link on that download page is the HyperCard patch doc you need.  Download ResPatch then run it, choose “Patch to apply: Other” then select the HyperCard patch doc.  It will prompt you to choose the HyperCard app you want to patch and you’re done.

If you want to patch it yourself of course, you can just open CODE resource 42 with ResEdit in your HyperCard application, go to global offset $45F2 and change “6702” (BEQ *+$04) to “4E71” (NOP).

Your idea would also work (and ensure stacks that are supposed to open in little windows don’t go full-screen — so in fact it would work better!), but that would require adding bytes to the code to check the multiple cases, which would break all the existing hard-coded offsets in the assembly code and require them to be adjusted.  That’s a much, much tricker patch.  I did the lazy one-liner thing. :)  

 

tt

Well-known member
Oh I see it now. I am testing it with Mini vMac set to the 512 x 341 resolution. It looks like there's another resolution check to whether or not to pop up the little map window, but it's easy to close. 

How would I find the right offset and hex for other versions of HyperCard? For example, the color version of Spelunx doesn't have the same content at that offset, it looks similar to v2.1 HyperCard player.

 

Crutch

Well-known member
Try this:  Pop it open with ResEdit and open up the CODE resource called “HyperTools2” (kudos to Bill Atkinson for naming his CODE resources! ... in v2.1 this is CODE 42).

Somewhere in there you should find the following string, I expect:

A8A6 101F 6702

Change this to

A8A6 101F 4E71

And try it. :)

 
Top