- Added Mac SE 24 bit ROM screen patch from mini vMac.
The guest OS resolution in System 6 can be defined
at an arbitrary combination.
- Mac frame buffer base mapping is moved out from guest RAM.
This creates more leg room for the host frame buffer.
- Enable System 6 vscreen support in SDL2. Passed build and test.
- Enable System 6 vscreen support in SDL1. Passed build and test.
- Eanble System 6 vscreen support in XWidnow. Passed build and test.
See my [screen cast demo here](https://youtu.be/aXzM8t_u3zI)
Signed-off-by: Ricky Zhang <rickyzhang@gmail.com>
24bit ROM doesn't invoke video driver control. Therefore, a manual step
is required to add a black & white palette for guest_surface in SDL2.
Please check out [the screen cast here](https://youtu.be/br5Hjt9F6X4).
Signed-off-by: Ricky Zhang <rickyzhang@gmail.com>
When the host OS is Mac OS X, direct addressing in BII doesn't guarantee
that the allocated memory for frame buffer base address in the host
(FrameBaseHost) satisfies the following conditions:
- FrameBaseHost > RamBaseHost
- (FrameBaseHost - RamBaseHost) + Frame_Size < 4GiB
where RamBaseHost refers to the emulated RAM base address in the host.
This may cause the random hang problem where the allocated frame address
failed to meet the conditions above.
Because the direct addressing mapping is a simple math:
RamAddrMac = RamAddrHost - RamBaseHost.
See details: https://github.com/cebix/macemu/issues/203
Signed-off-by: Ricky Zhang <rickyzhang@gmail.com>
- In 8 bit color game, the hack crashed the app.
- After backing out the hack, I can play 256 color game with displaycolordepth 8.
- By default, the displaycolordepth is 0.
Signed-off-by: Ricky Zhang <rickyzhang@gmail.com>
By default, without providing `with-sdl2` in configure it uses SDL1.
Users need to explicitly request SDL2.
Signed-off-by: Ricky Zhang <rickyzhang@gmail.com>
The old code used the `[[` shell keyword, which is only available in bash.
The interpreter in line 1 is `/bin/sh` though.
This confused my shell portability check in pkgsrc, since that check neither guesses the target platform from the filename, nor assumes that `/bin/sh` is actually bash, even though this may be true on macOS.
The change makes the code shorter with the well-known `${var:-default}` pattern.
Since `$1` is now only accessed when it is defined, this allows the program to have a `set -eu` at the top.
This in turn would make all the `&&` redundant since it applies automatic error checking.
The `{ ... } 1>&2` could also be replaced with a single `exec 1>&2` at the top.