MII: New IIe open source emulator, mine this time!

70 posts / 0 new
Last post
BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
MII: New IIe open source emulator, mine this time!
AttachmentSize
Package icon mii_emu-main.zip4.51 MB

 

https://github.com/buserror/mii_emu

 

This has to be the worst case of feature creep in history, I wanted to hack an emulator for one specific project (Testing a Dan ][ card tool!) and couldn't find something I liked enough -- so, I wrote my own! So here it is, MIT licence. Tons of stuff work, a few bits needs work, but it's perfectly usable as is already!

Funny thing is, I haven't even started writing the Dan][ tool I wanted, but I no longer have an excuse now -- procastination at it's best!

 

Monochrome Double-Hi res

 

I know there are many out there, but none of them were ticking my fancy, so I decide to write my own. To start with it was "How hard can it be really?" then it snowballed as more and more things were fixed & added. It's been shelved for a while because well, it lacked documentation, headers, licence and stuff, so I spent some time cleaning it up for release.

One primary reason for this project was that linapple (or -pie) codebase is really horrible. It dates back from 2000's or before, with loads of Windows crud leftover, some SDL crud added, the audio just doesn't really work, and overall if you want to hack around the codebase, it's pretty dreadful.

I wanted something:

  • Modern, Clean code, modular -- in the spirit of simavr, usable as a library.
  • Made for linux. In C. With a Makefile. None of the trendy bloatware.
  • Small, Fast.
  • Minimal dependencies.
  • No gigantic config file.
  • I didn't need II+ or unenhanced IIe, just 65c02 //e.

What can it do?

  • 65c02 //e with 128K of ram.
  • Support all known graphic modes:
    • Double-hires in mono and color, with automatic switch
    • All the other modes in color/mono
    • Color, Green, Amber rendering
    • Simulated 'scanlines' to make it look vintage
  • Speaker audio. ALSA For playback.
    • Adds a small 'attack' filter when playing back to soften the often annoying 'click' of typical audio effects from the apple II.
  • Mouse Card -- mouse isn't captured like in some other emulators.
  • No Slot Clock
  • Smartport DMA 'hard drive' card
  • "Titan Accelerator //e" simulation, to turn on/off fast mode.
  • Terence's J Boldt 1MB ROM card, also because I own a couple!
  • Floppy Drive [more on that later]
  • No dependencies (X11) OpenGL rendering, using Nuklear backend for UI
Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Sounds nice!  I will check it

Sounds nice!  I will check it out soon!

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I git cloned the project and

I git cloned the project and then did a make and ran with mii_emu -def  A couple of weird things I've noticed...  PR#6 appears to run the //e self test.  And when I select "Amber" on the left side menu the text comes out blue.  If I'm in Green or Amber and the self test runs it goes to color when running the test then "System OK" comes out in mono.  Weird.  I haven't dug in deeper than that yet.

I don't see an "install" target in the Makefile.  I'm assuming that disk images need to go in the disks folder, but not sure how to specify a different location for that.  Also not sure how to pick what disk image is in the "drive".

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Another weird thing I just

Another weird thing I just noticed...  If I do this:

 

GR

COLOR=1

HLIN 0,39 at 0

HGR

 

The lowres plot looks fine but the hgr doesn't show the hires graphics screen.  The lowres is still there.

 

HGR2

HCOLOR=1

HPLOT 0,0 to 279,0

 

That clears the 2nd hires page and draws a green line like expected.  But if I do this:

 

HGR

 

Now I get the lowres screen again...

 

Very strange.

 

 

 

 

 

mmphosis's picture
Offline
Last seen: 1 week 4 days ago
Joined: Aug 18 2005 - 16:26
Posts: 437
Awesome!grep -rn 'hires = 0'

Awesome!

grep -rn 'hires = 0' *
mii_emu-main/src/mii_video.c:167: //hires = 0;
Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
mmphosis wrote:Awesome!grep
mmphosis wrote:

Awesome!

grep -rn 'hires = 0' *
mii_emu-main/src/mii_video.c:167: //hires = 0;

 

That seems to have fixed the problem.  Should I create a pull request?

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
More stuff I wouldn't expect

More stuff I wouldn't expect on an actual Apple //e...  If I do this:

 

CALL -151

 

then do <Ctrl>-C <return>

 

I don't get back to Applesoft.

 

Ctrl-B doesn't work either.

 

Neither does:

 

3D0G

 

or 

 

9DBFG

 

Not surprised by the later since DOS doesn't appear to be loaded.

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I finally got it to boot from

I finally got it to boot from a disk image:

 

build-x86_64-linux-gnu/bin/mii_emu -s 6:disk2 -d 6:1 /home/leeh/src/mii_emU/disks/prodos242.dsk

 

 

It would be super useful to provide left menu items to select drives and mount disks.  Doing it from the command line is awkward and I am not sure how to change disks after starting.

 

I'm probahly being super stupid and not getting it though.  It took me a lot longer to figure out the command line than it probably should have.

 

 

 

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
I plan to add some UI to

I plan to add some UI to select cards/disks when the emulator is launched, it just takes time; I already added a file selector, but it still needs the UI to specify the drive, eject, status etc.. It will definitely appear soon tho...
For the command line, it's all in the readme!

Usage: ./build-x86_64-linux-gnu/bin/mii_emu [options]
Options:
-h, --help This help
-v, --verbose Verbose output
-m, --mute Mute the speaker
-vol, --volume Set speaker volume (0.0 to 10.0)
-speed, --speed Set the CPU speed in MHz
-s, --slot : Specify a slot and driver
Slot id is 1..7
-d, --drive :: Specify a drive
Slot id is 1..7, drive is 1..2
Alternate syntax: :
-L, --list-drivers List available drivers
-def, --default Set default drives:
Slot 4: mouse
Slot 6: disk2
Slot 7: smartport
-nsc[=0|1] Enable/Disable No Slot Clock:
0: disable
1: enable [Enabled by default]
-titan[=0|1] Enable/Disable Titan Accelerator IIe:
0: disable [default]
1: enable [Start at 3.58MHz]
And the available drivers:

$ ./build-x86_64-linux-gnu/bin/mii_emu -L
mii: available drivers:
titan - Titan Accelerator IIe
smartport - SmartPort card
nsc - No Slot Clock
mouse - Mouse card
eecard - EEPROM 1MB card
disk2 - Apple Disk ][

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Yeah, I finally figured out

Yeah, I finally figured out the command line options to make it work.  I don't mean to be picky about the UI.  I understand it is a project in progress.  It has a ton of potential. I'm looking forward to seeing how it develops.

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
A lot of .dsk images don't

A lot of .dsk images don't seem to boot it seems kind of hit or miss which ones work or don't.  Some seem to take a long time before they start to boot.  .do and .po files seem to work better.

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
In some games it seems like

In some games it seems like the orange color in hires is way more yellow than I would expect.  I guess I should start looking in the code to see if I can figure it out myself rather than just posting. 

I'm looking at the video code and the RGB values in the emum seem to be what I'd expect.  The weird thing now that I think about it is that the yellowish color that I'm seeing in hires where things should be orange is the color amber I'd expect everthing to be in the Amber mode which shows up as blue for me...

 

Weird.

 

 

 

mmphosis's picture
Offline
Last seen: 1 week 4 days ago
Joined: Aug 18 2005 - 16:26
Posts: 437
I got the Ctrl keys working.

I got the Ctrl keys working.

 

I went a bit "nuklear" and removed some stuff: cut/copy/paste etc.

With some code added to handle the control key, control keys work and the Tab key works like a Ctrl+I keypress.

mmphosis's picture
Offline
Last seen: 1 week 4 days ago
Joined: Aug 18 2005 - 16:26
Posts: 437
patches to make ctrl keys work

#    patch mii_emu-main/nuklear/mii_nuklear.c      mii_nuklear.c.patch

#    patch mii_emu-main/nuklear/nuklear_xlib_gl3.h nuklear_xlib_gl3.h.patch

 

# cat mii_nuklear.c.patch

 

262a263,264

> static int control_key_down = 0;

>

272c274,281

<             mii_keypress(mii, in->keyboard.text[0]);

---

>             char c;

>

>             c = in->keyboard.text[0];

>             if (c > 63) { // is alpha?

>                 if (c > 95) c -= 32; // convert to upper case

>                 c -= control_key_down; // convert to control character

>             }

>             mii_keypress(mii, c);

351a361,367

>         else if (nk_input_is_key_pressed(in, NK_KEY_TAB))

>             sig.data = 'I' - 'A' + 1;

>         else if (nk_input_is_key_released(in, NK_KEY_CTRL))

>             control_key_down = 0;

>         else if (nk_input_is_key_down(in, NK_KEY_CTRL)) {

>             if (!control_key_down) control_key_down = 64;

>         }

 

# cat nuklear_xlib_gl3.h.patch

 

644,667d643

<             if (*code == 'c' && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_COPY, down);

<             else if (*code == 'v' && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_PASTE, down);

<             else if (*code == 'x' && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_CUT, down);

<             else if (*code == 'z' && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_TEXT_UNDO, down);

<             else if (*code == 'r' && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_TEXT_REDO, down);

<             else if (*code == XK_Left && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_TEXT_WORD_LEFT, down);

<             else if (*code == XK_Right && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_TEXT_WORD_RIGHT, down);

<             else if (*code == 'b' && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_TEXT_LINE_START, down);

<             else if (*code == 'e' && (evt->xkey.state & ControlMask))

<                 nk_input_key(ctx, NK_KEY_TEXT_LINE_END, down);

<             else {

<                 if (*code == 'i')

<                     nk_input_key(ctx, NK_KEY_TEXT_INSERT_MODE, down);

<                 else if (*code == 'r')

<                     nk_input_key(ctx, NK_KEY_TEXT_REPLACE_MODE, down);

<

681d656

<             }

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Anyone else see the Amber

Anyone else see the Amber mode as blue and the orange in hires coming out amber or is that just me?

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
softwarejanitor wrote:Anyone
softwarejanitor wrote:

Anyone else see the Amber mode as blue and the orange in hires coming out amber or is that just me?

 

OK...  maybe something is messed up for me, but it seems like the HI_RGB in mii_video.c the code was not quite right...  I changed it like this and now things look better to me...

 

 

#define HI_RGB(r,g,b)   (0xff000000 | ((b) << 16) | ((g) << 8) | (r))

 

I also find that changing the mono const like this looks more pleasing for the amber mode:

 

static const uint32_t mono[3][2] = {

        { 0xff000000, C_WHITE },

        { 0xff000000, C_GREEN },

        //{ 0xff000000, C_ORANGE },

        { 0xff000000, HI_RGB(0xfd, 0xcf, 0x14) },

};

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I saw the post on the FB

I saw the post on the FB group.  Not sure about the colors thing yet, other than someone else questioned it there.  The butterfly pic in an earlier post here definitely looks like the color palate is backwards compared to the one posted on the FB group.

 

I will be interested to hear if I'm totally crazy or if the color pallate was off.

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Here are the changes that I'm

Here are the changes that I'm currently running, all in mii_video.c

 

diff --git a/src/mii_video.c b/src/mii_video.c

index 6c633b0..574a212 100644

--- a/src/mii_video.c

+++ b/src/mii_video.c

@@ -37,7 +37,7 @@ enum {

  * Colors were lifted from

  * https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb

  */

-#define HI_RGB(r,g,b)  (0xff000000 | ((r) << 16) | ((g) << 8) | (b))

+#define HI_RGB(r,g,b)  (0xff000000 | ((b) << 16) | ((g) << 8) | (r))

 static const uint32_t lores_colors[] = {

        [0x0] = HI_RGB(0x00, 0x00, 0x00),       // black

        [0x1] = HI_RGB(0xe3, 0x1e, 0x60),       // magenta

@@ -66,7 +66,7 @@ enum {

        C_WHITE         = HI_RGB(0xff, 0xff, 0xff),     // white

 };

 -static const uint32_t hires_colors[] = {

+/*static const uint32_t hires_colors[] = {

        C_BLACK,

        C_PURPLE,

        C_GREEN,

@@ -77,6 +77,18 @@ static const uint32_t hires_colors[] = {

        C_BLUE,

        C_ORANGE,

        C_WHITE,

+};*/

+static const uint32_t hires_colors[] = {

+       C_BLACK,

+       C_PURPLE,

+       C_GREEN,

+       C_GREEN,

+       C_PURPLE,

+       C_BLUE,

+       C_ORANGE,

+       C_ORANGE,

+       C_BLUE,

+       C_WHITE,

 };

  static const uint32_t dhires_colors[] = {

@@ -101,7 +113,8 @@ static const uint32_t dhires_colors[] = {

 static const uint32_t mono[3][2] = {

        { 0xff000000, C_WHITE },

        { 0xff000000, C_GREEN },

-       { 0xff000000, C_ORANGE },

+       //{ 0xff000000, C_ORANGE },

+       { 0xff000000, HI_RGB(0xfd, 0xcf, 0x14) },

 };

  @@ -164,7 +177,7 @@ mii_video_run(

                mii_bank_poke(main, SWVBL, 0x80);

                if (mixed && !text) {

 

                        text = mii->video.line >= 192 - (4 * 8);

 

-                       hires = 0;

+                       //hires = 0;

                }

                // http://www.1000bit.it/support/manuali/apple/technotes/aiie/tn.aiie.03.html

                if (hires && !text && col80 && dhires) {

 

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
I pushed quite a few fixes in

I pushed quite a few fixes in the last couple of days, mostly fixes for pretty much everything I've seen here, as well as adding Joystick support!

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
BusError wrote:I pushed quite
BusError wrote:

I pushed quite a few fixes in the last couple of days, mostly fixes for pretty much everything I've seen here, as well as adding Joystick support!

 

I just pulled and built from github and the colors still don't look right to me.  I re-did a few of my changes and with these it looks correct to me.

 

 

 

diff --git a/src/mii_video.c b/src/mii_video.c

index 1e59b10..252c983 100644

--- a/src/mii_video.c

+++ b/src/mii_video.c

@@ -37,7 +37,7 @@ enum {

  * Colors were lifted from

  * https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb

  */

-#define HI_RGB(r,g,b)  (0xff000000 | ((r) << 16) | ((g) << 8) | (b))

+#define HI_RGB(r,g,b)  (0xff000000 | ((b) << 16) | ((g) << 8) | (r))

 static const uint32_t lores_colors[] = {

        [0x0] = HI_RGB(0x00, 0x00, 0x00),       // black

        [0x1] = HI_RGB(0xe3, 0x1e, 0x60),       // magenta

@@ -72,10 +72,10 @@ static const uint32_t hires_colors[] = {

        C_GREEN,

        C_GREEN,

        C_PURPLE,

-       C_ORANGE,

-       C_BLUE,

        C_BLUE,

        C_ORANGE,

+       C_ORANGE,

+       C_BLUE,

        C_WHITE,

 };

 

@@ -101,7 +101,7 @@ static const uint32_t dhires_colors[] = {

 static const uint32_t mono[3][2] = {

        { 0xff000000, C_WHITE },

        { 0xff000000, C_GREEN },

-       { 0xff000000, HI_RGB(0x14, 0xcf, 0xfd) },

+       { 0xff000000, HI_RGB(0xfd, 0xcf, 0x14) },

 }; 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
The first change fixes RGB

The first change fixes RGB order, the second swaps orange and blue to be correct and the 3rd one makes the amber correct instead of blue.

low res colors 0-15

hires colors 0,7

Total Replay in color

Total Replay in amber

 

Those match my real //e pretty close.

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I created a pull request on

I created a pull request on github with those changes.

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
How bizare, here the current

How bizare, here the current file displays properly, including amber and my hi-res test page also works as I'd expect!

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
When I did a fresh pull I

When I did a fresh pull I didn't see any changes at all in mii_video.c related to the colors.  I did see changes for the soft switches  Did you look at the diff I posted above or the pull request?  You can see what I did.

 

The orange in what you just posted really doesn't look right though.  It's way too yellow.

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Here is a better illustration

Here is a better illustration of what the colors look like after my changes:

 

Note that the blue is a light blue and the orange is very redish

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
hirescolors2e.jpeg

 

Bad pic due to backlighting, but you can see the colors on my real //e.  Not a 100% perfect match to what I'm seeing in the emulator, but it is pretty close.  My //e is outputting through a Briel Apple VGA card though, so its color may not be exacly what you'd see on a composite color monitor or TV with RF modulator either.

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
I don't see a pull request

I don't see a pull request either... https://github.com/buserror/mii_emu/pulls

I so see differences, but tnothing to explain the channel swap for amber, for example!

 

The color difference might be explained by the Briel card -- I use the A2 VGA card too here, and the blue is a lot washed out than many of the screenshots (real shots of screens) I've seen. I picked up the RGB *primarily* from this page: https://www.mrob.com/pub/xapple2/colors.html Simply because it looks like someone who did some math to derive them from the NTSC beam offsets!

 

Otherwise, if you look at "apple 2 colors images" on google, theres as many combination of shades as you can imagine, from deep blue to super pale blue!!

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
BusError wrote:I don't see a
BusError wrote:

I don't see a pull request either... https://github.com/buserror/mii_emu/pulls

I so see differences, but tnothing to explain the channel swap for amber, for example!

 

The color difference might be explained by the Briel card -- I use the A2 VGA card too here, and the blue is a lot washed out than many of the screenshots (real shots of screens) I've seen. I picked up

For some reason github isn't letting me create a pull request from my fork to your original repo.  It is supposed to have a "yellow banner" but I am not seeing it.  Looking at the history it appears some of the changes may have been made in your repo, but they are not showing on the main branch so if people clone it and build they may not be getting the latest correct code.

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
 So, the reason MII has been

 

So, the reason MII has been a bit silent is that I've been busy making a brand new UI library for it! I know I know, feature creep central strikes again. I want a nice UI, so I re-developped a System 7 and GS/OS style 'toolbox' library with 'managers' and stuff. It's fun. It's very very nearly ready. It'll be overlayed on top of MII 'screen' and replace Nuklear which I never really liked. 

And it looks 'vintage' too! :-)

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
Well took a while, real work$

Well took a while, real work$ keep getting in the way of fun things! Anyway, version 1.5 with new snazzy UI library is out!

 

https://github.com/buserror/mii_emu/

 

Quick how to load and boot

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I just did a fresh clone from

I just did a fresh clone from github and made it and for whatever reason it isn't working for me.  I was trying to use disk images I'd used with older versions and they just "spin" forever and nothing happens.  How do you get the menus to come up?  I see nothing, just a blank window.

 

Like this: 

 

build-x86_64-linux-gnu/bin/mii_emu_gl -s 6:disk2 -d 6:1 disks/prodos242.dsk

 

I get nothing but a black window.

 

 

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
Hmm what distro/graphic card

Hmm what distro/graphic card are you using? I made an asumption in this version that the non-power-of-two texture were now available in OpenGL everywhere, but I might have been a bit too optimistic!

 

EDIT: I managed to duplicate the problem on an older latop, atempting to fix...

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
BusError wrote:Hmm what
BusError wrote:

Hmm what distro/graphic card are you using? I made an asumption in this version that the non-power-of-two texture were now available in OpenGL everywhere, but I might have been a bit too optimistic!

Ubuntu and a i7 10th gen with the Intel HD graphics.

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
It has been a while since I

It has been a while since I played with mii_emu...  I don't even remember what keys were ctrl-reset or brought up the menus or anything.

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
It should be fixed now. Works

It should be fixed now. Works on my laptop anyway (also old i7 with Intel GPU).

 

You don't /really/ have to specify a command line anymore -- when you launch, it has a 'Machine' menu where you can configure the disks etc... and reboot from there

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
BusError wrote:It should be
BusError wrote:

It should be fixed now. Works on my laptop anyway (also old i7 with Intel GPU).

 

You don't /really/ have to specify a command line anymore -- when you launch, it has a 'Machine' menu where you can configure the disks etc... and reboot from there

Yes, it is working now!  Looks nice so far.  I am running XPS Diagnostics //e on it just for grins.

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Color bar test still looks

Color bar test still looks whacked.

 

 

 

Looks like exactly the same issue I've seen all along.

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Here is after I re-applied

Here is after I re-applied the changes I posted above to mii_video.c

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
leeh@leeh-ZBOX-MI622-MI642

leeh@leeh-ZBOX-MI622-MI642-MI662NANO:~/src/mii_emu$ git diff

diff --git a/src/mii_video.c b/src/mii_video.c

index 7b7c223..6d33719 100644

--- a/src/mii_video.c

+++ b/src/mii_video.c

@@ -39,7 +39,7 @@ enum {

  * and

  * https://www.mrob.com/pub/xapple2/colors.html

  */

-#define HI_RGB(r,g,b)  (0xff000000 | ((r) << 16) | ((g) << 8) | (b))

+#define HI_RGB(r,g,b)  (0xff000000 | ((b) << 16) | ((g) << 8) | (r))

 static const uint32_t lores_colors[] = {

        [0x0] = HI_RGB(0x00, 0x00, 0x00),       // black

        [0x1] = HI_RGB(0xe3, 0x1e, 0x60),       // magenta

@@ -103,7 +103,7 @@ static const uint32_t dhires_colors[] = {

 static const uint32_t mono[3][2] = {

        { 0xff000000, C_WHITE },

        { 0xff000000, C_GREEN },

-       { 0xff000000, HI_RGB(0x14, 0xcf, 0xfd) },

+       { 0xff000000, HI_RGB(0xfd, 0xcf, 0x14) },

 };

  @@ -428,4 +428,4 @@ mii_video_init(

 {

        mii->video.timer_id = mii_timer_register(mii,

                                mii_video_timer_cb, NULL, MII_VIDEO_H_CYCLES, __func__);

-}

\ No newline at end of file

+}

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
I'm fairly sure I've nowe got

I'm fairly sure I've nowe got a proper fix for that problem you have (and I don't see here!) seems the OpenGL implementation vs little-endian pixels are a problem. I've also already fixed some problem with the lowres (and double low-res colors) so it's being worked on!

I worked a lot to get 1.5 out with the new UI, and I've got a bit of a backlog of things to do in the emulation proper -- inc the video, and floppy (.WOZ support) but now I got a good 'base' to work on! :-)

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I've had a few weirdnesses

I've had a few weirdnesses with the menu and a couple crashes so far.  I will try to see if I can reproduce them.

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
BusError wrote:I'm fairly
BusError wrote:

I'm fairly sure I've nowe got a proper fix for that problem you have (and I don't see here!) seems the OpenGL implementation vs little-endian pixels are a problem. I've also already fixed some problem with the lowres (and double low-res colors) so it's being worked on!

I worked a lot to get 1.5 out with the new UI, and I've got a bit of a backlog of things to do in the emulation proper --

Weird that you don't see that color issue, are you running it on an x86-64 machine or something with an ARM?  Endianes should be the same on all Intel/AMD based Linux boxes.  The little Zotac Z-Box Nano I have is about as plain vanilla and ordinary hardware as you can get and I'm running a recent updated and standard install of Ubuntu.  I don't see color werdness in any other apps including LinApple.

 

 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
Whats that XPS Diagnostics /

Whats that XPS Diagnostics //e and the colorbar thing you use? I could do with a concise tool, right now I have a few files I load to test but it's far from optimal. I wish I could find a way to do proper regression testing on the output for when I change something. 

 

Edit: found it. First Google links are for a Dell laptop diag tools :-)

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
This is really bizare, as I

This is really bizare, as I run on a x86_64 with nvidia driver here and it's fine... That amber color you patch looks perfect from here! So there must be something related to how the ARGB BGRA is interpreted.. the green works, it's really the B and R channels that are inverted (also possibly the A being ignored, not sure) -- anything I'm about 98% sure I've found a way to make sure it won't happen again (crossing fingers) -- I push that when I finish the other bits.

I added a 'clean' support for double low-res, and also support for monochrome for that resolution (with luminance based colors).

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
There is a whole directory of

There is a whole directory of diagnostic software on Asimov.

 

https://mirrors.apple2.org.za/ftp.apple.asimov.net/images/disk_utils/diagnostics/

 

 

 

 

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
"COLOR DEMOSOFT" from the DOS

"COLOR DEMOSOFT" from the DOS 3.3 SYSTEM MASTER is also a good low-res color bar test.  Or COLOR DEMO for IntBASIC.

 

Offline
Last seen: 1 day 4 hours ago
Joined: May 31 2022 - 18:18
Posts: 302
Looks nice, but don't have a

Looks nice, but don't have a Linux native box so would have to run a VM ot run a VM... doesn't sounds great.Do you know of anyone working on getting a windows build? Looks like some of the tools will be available with windows, so easy right? =) 

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
Ah well, I very rarely used

Ah well, I very rarely used windows unless forced to, so I have no plan of starting now :-) -- I'm sure someone will port it, or, pehaps I'll port it to WASM to run it in the browser at some point...

Offline
Last seen: 2 months 3 weeks ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
BusError wrote:Ah well, I
BusError wrote:

Ah well, I very rarely used windows unless forced to, so I have no plan of starting now :-) -- I'm sure someone will port it, or, pehaps I'll port it to WASM to run it in the browser at some point...

 

Yeah, I think I'd rather have a root canal than use Windows let alone develop for it.  Every time I'm forced to deal with it I get reminded just how awful it is and how clunky the user interface is compared to MacOS, let alone Ubuntu.  It's even worse for development, all the tools for Windows are either stupidly expensive or a real pain in the ass to install.  MacOS at least has Brew, although it isn't nearly as good as apt and doesn't have nearly the amount of stuff available.  Windows everything just $$$ in their app store and not much there.

 

Offline
Last seen: 1 day 4 hours ago
Joined: May 31 2022 - 18:18
Posts: 302
BusError wrote:Ah well, I
BusError wrote:

Ah well, I very rarely used windows unless forced to, so I have no plan of starting now :-) -- I'm sure someone will port it, or, pehaps I'll port it to WASM to run it in the browser at some point...

Yah, me too but I gotta use it. =(

I never got beyond dos app development, so hopefully somone with that skillset will see the value in doing the work. Can't be too hard, right? lol

BusError's picture
Offline
Last seen: 1 month 3 weeks ago
Joined: Jul 9 2023 - 06:39
Posts: 63
New version 1.6, some tweaks

New version 1.6, some tweaks to the emulation but the Big Bit is really the support for WOZ 1/2 in read/write. I wrote a complete replacement for the floppy emulation, down to emulating the LSS state machine. Works great, tried a couple of hundreds of .WOZ and so far, they all work!

 

https://github.com/buserror/mii_emu

 

Pages

Log in or register to post comments