RasppleII / a2cloud

Connect your Apple // to the world via Linux
Other
5 stars 2 forks source link

Find linapple ∀(linapple) and use it! #37

Open knghtbrd opened 6 years ago

knghtbrd commented 6 years ago

Trivia: Read ∀ as "for all".

Linapple's upstream developer released version 2b, but never put it into any SCM that I know of. However sometime perhaps before or after that was done, maxolasersquad/linapple was created from version 2a. There are 14 forks of this repository, and these do not encompass all versions of linapple on Github—and none of them have the 2b changes. Here's the hierarchy as best I can sort it:

Of these, @cpressey (catseye tech) and @ghedger are the ones to be watching because they've both been actively working on this codebase. Looks like ghedger has called it 2.1 at this point, but cpressey has important stuff like … a fix to the 777 problem. A merge is needed here.

And that's just one fork tree!

There you have it. That's what I was able to find easily. Several sites redistribute these or the original in various states from 2 to 2b. Two major forks. Which one do we use or do we try to encourage work toward a merge? AppleWin has had massive development since these trees and a fresh port to SDL2 could be a path of low resistance but that further fractures things and it's way beyond the scope of a2cloud and beyond my free time to even begin thinking about actively maintaining an emulator.

None of these projects is blessed by the initial creator to my knowledge who did not respond to email on the subject, so I'm inclined to assume that if someone wants claim to the successor of linapple, those others who want to see linapple still be a thing can declare by acclamation that the title is theirs. Ideally we would rebase some forks at that point.

knghtbrd commented 6 years ago

If y'all think this is fun, you should see what the state of KEGS-derived emulators looks like. Hoo boy. Fortunately a dominant successor HAS emerged in GSPort, and GSPlus has not diverged from it too much—though likely primarily because GSPort development is fairly stagnant rather than because @digarok necessarily wants to track GSPort changes. Now that it has moved to GitHub, GSPort is not the ancestor of GSPlus, but it could be in about 20 minutes and I'll personally do all of the work that I can do to make it happen if @digarok will let me. :) It's unfortunately not a trivial rebase because gsplus is full of mixed line-endings. If you know where the fork happened (and I do, it's it's david-schmidt/gsport@1462ff), you can do this song and dance where you fork that on GitHub, branch off there, merge in gsplus, make the new fork look identical to gsplus, and then swap them. The trick is to do it without rewriting history (git replace is how you do that.)

It's easier for all the repos that are forked off maxolasersquad/linapple since all you need to do is clone them, delete the fork on github, re-fork from your new base, and push your cloned state to the server unconditionally. GitHub will figure it out.

ghedger commented 6 years ago

Yes, I did change the label. Fixed an off-by-one cycle count problem for the Mockingboard emulation (that was fun) - eliminates the choppiness in games that play MB music and sound, and a few other little things, cannot remember. Something to do with loading config files and Windows Registry emulation... I think I'd added scanline emulation to emulate the composite color monitors somewhere along the line too. The codebase is a bit of mess...

Oh yes, I remember: I made a proper Makefile for the thing and a more conventional development directory structure (src/ include/ obj/ bin/), and believe I'd created an Ubuntu package.

Not sure where Tom Charlesworth is these days - I had worked with him in 2004 on the Mockingboard speech emulation (263 chip) because I have an actual Mockingboard in an Apple IIe. Don't have time at the moment and so few programs actually used it, but it would be a cool achievement nonetheless.

The next big spate of work will involve updating from the the SDL it's using to the next major version. I recall looking into the scope of that; it's rather robust and I'd need a significant block of uninterrupted time.

cpressey commented 6 years ago

Just in case it helps clarify things for anyone trying to untangle the history, I forked https://github.com/catseye/linapple from https://github.com/timob/linapple originally - it seems that as some point, that repository was deleted, and Github "reparented" my fork (and possibly other forks) to https://github.com/maxolasersquad/linapple .

I mainly made my fork to support launching a Funicular to run Apple Befunge; that is, I wanted an emulator you could start simply by running linapple foo.dsk in any directory. Much of that functionality comes from a branch in @arloduff's fork, which I merged into master in my fork. If there was a "more official" version of linapple that supported this mode of operation, I probably wouldn't bother to maintain a fork at all.

I wasn't aware there was a version 2b before today.

@iKarith May I ask, what does "the 777 problem" refer to? (fixing the file-permission bits?)

gungwald commented 6 years ago

Git gives me a headache. But, it would be nice if someone could clean up these messes by consolidating all the various forks.

On Thursday, May 3, 2018, 4:45:05 PM EDT, Joseph Carter <notifications@github.com> wrote:  

If y'all think this is fun, you should see what the state of KEGS-derived emulators looks like. Hoo boy. Fortunately a dominant successor HAS emerged in GSPort, and GSPlus has not diverged from it too much—though likely primarily because GSPort development is fairly stagnant rather than because @digarok necessarily wants to track GSPort changes. Now that it has moved to GitHub, GSPort is not the ancestor of GSPlus, but it could be in about 20 minutes and I'll personally do all of the work that I can do to make it happen if @digarok will let me. :) It's unfortunately not a trivial rebase because gsplus is full of mixed line-endings. If you know where the fork happened (and I do, it's it's david-schmidt/gsport@1462ff), you can do this song and dance where you fork that on GitHub, branch off there, merge in gsplus, make the new fork look identical to gsplus, and then swap them. The trick is to do it without rewriting history (git replace is how you do that.)

It's easier for all the repos that are forked off maxolasersquad/linapple since all you need to do is clone them, delete the fork on github, re-fork from your new base, and push your cloned state to the server unconditionally. GitHub will figure it out.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

dabonetn commented 6 years ago

My port just came out of the need to pass a disk image to the emulator via the command line to allow frontend usage. I also added the joystick remap because of my custom pi setup.

I would be very happy if someone else added these features to a updated version, as I’m not much of a programmer, and I think someone with more skill could do it much better than the hack job I did.

From: Bill Chatfield [mailto:notifications@github.com] Sent: Friday, May 04, 2018 10:46 AM To: RasppleII/a2cloud a2cloud@noreply.github.com Cc: dabonetn dabone@gmail.com; Mention mention@noreply.github.com Subject: Re: [RasppleII/a2cloud] Find linapple ∀(linapple) and use it! (#37)

Git gives me a headache. But, it would be nice if someone could clean up these messes by consolidating all the various forks.

On Thursday, May 3, 2018, 4:45:05 PM EDT, Joseph Carter notifications@github.com<mailto:notifications@github.com> wrote:

If y'all think this is fun, you should see what the state of KEGS-derived emulators looks like. Hoo boy. Fortunately a dominant successor HAS emerged in GSPort, and GSPlus has not diverged from it too much—though likely primarily because GSPort development is fairly stagnant rather than because @digarok necessarily wants to track GSPort changes. Now that it has moved to GitHub, GSPort is not the ancestor of GSPlus, but it could be in about 20 minutes and I'll personally do all of the work that I can do to make it happen if @digarok will let me. :) It's unfortunately not a trivial rebase because gsplus is full of mixed line-endings. If you know where the fork happened (and I do, it's it's david-schmidt/gsport@1462ff), you can do this song and dance where you fork that on GitHub, branch off there, merge in gsplus, make the new fork look identical to gsplus, and then swap them. The trick is to do it without rewriting history (git replace is how you do that.)

It's easier for all the repos that are forked off maxolasersquad/linapple since all you need to do is clone them, delete the fork on github, re-fork from your new base, and push your cloned state to the server unconditionally. GitHub will figure it out.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/RasppleII/a2cloud/issues/37#issuecomment-386624502, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOke4CQWogJC8lS95P01NwnkvqZ3jIupks5tvGnEgaJpZM4TxogB.

ghedger commented 6 years ago

I don't have time to do anything right now as I'm embroiled in another project, but do have some thoughts on the subject.

Rambling thoughts:

I focused mostly on the audio aspects of systems. Note there is some challenge in GS vs. the 8-bit Apples. On real hardware back in the day I did have a Mockingboard in the GS, and it was hit or miss depending on how the individual program detected MB. The thinking then was that, because the GS was so much more capable there was no real need for full support of the add-ons for 8-bit software. Actually, the thinking was all over the map because unified desktop-based environments were still so new (which, BTW, lends to the charm of the early 8-bit software, how different developers solved problems.)

What would be super duper cool is a Super ][ emulator that consolidates the capabilities of the 8- and 16- bit Apple II platforms, even beyond the IIGS's modest 8-bit emulation capabilities. A "mode select", for example, could select the model of Apple II you wish to emulate, including the IIGS. Some of the 8-bit emulators had this for 8-bit Apples. The IIGS's native 8-bit emulation, while good, didn't quite get all the way there...

Again, just musings...

knghtbrd commented 6 years ago

I never addressed the 777 problem: It's that linapple installs a bunch of stuff into the filesystem with mode 777 (NEVER a good idea, that's like posting your root passwd on a billboard along with your address and how to get into your local wifi…) It does that because it needs to be able to read and write the directory it's run from. It can't use ~/.local/share or ~/.config or read a system config out of /etc or /usr/local/etc … These things are fixable, but linapple was based on AppleWin which didn't know how to do that. And the easy way to fix them in SDL2 isn't available to us unless or until linapple is ported to SDL2. (And arguably SDL2's approach is a little hamfisted—I get why Sam did it that way, but I disagree with his lack of granularity in a purely Comic Book Guy sort of way.)

Regarding 2b and moving toward a master repository, I submitted a PR maxolasersquad/linapple#1 to bring it up to 2b, but perhaps one of you might prefer to apply the changes from that as necessary to your own branches. It's not a massive diff, after all and I'm happy to provide it if you'd like to start cherrypicking hunks and reimplementing others as necessary.

Sounds like none of you is 100% eager to become the linapple maintainer. As a guy who has my own projects myself (maintaining an emulator has very little to do with a2cloud), I totally get that! :D But I'd be happy to create a linapple/linapple either from 2b or from some point in your perhaps shared histories (maybe merging in the @timob tree changes?) and invite you all to the party. It won't be an entirely automated process because at least one of you has done pretty extensive moving of files. Git can follow that, but diff gets confused.

Anyway, if you're all (for all interested) part of the linapple/linapple repository you can PR your own changes into it as you feel is necessary. It'd be trivial to create a channel on the apple2 slack server to discuss this stuff. And if it's done by the group, nobody's really solely responsible for it by themselves.

knghtbrd commented 6 years ago

I haven't forgotten about this—I've just had a bit higher priorities the past few days. @maxolasersquad just merged the 2b changes (thank you!), so there's our starting point.

David, TL;DR: Original LinApple creator seems totally MIA, many patches and improvements scattered across repos. I propose collecting them into a linapple/linapple and inviting these fine folks to join the party so none of them are "responsible for it" individually. Dunno if you'd want any part of that.

After timob's tree was deleted, GitHub rehomed the repos to all be forks of yours. My intent is to recreate timob's tree (which can be found in many shallow forks) along with with maxolasersquad/linapple#1 as the starting point for properly having any of us interested adopting LinApple together, pulling in changes oldest to newest. Might be a bit of a slow process as a2cloud and a2server need to be my priorities for now.

maxolasersquad commented 6 years ago

My C skills aren't great, I mostly do web development, but if there's anything I can do to help let me know. I would even be willing to transfer the project to another namespace if that's helpful. I originally put the code up here for a project I was going to work on that's similar to Emulation Station, but I never got it off the ground.

knghtbrd commented 6 years ago

Thanks David, that might make things easier. If you wind up interested in something, please feel free to contribute or not as you can. We might need a new website at some point in the near future, but I don't think it needs to be anything impressive. I figured a GH org page would suffice unless someone has a mind for something better.

Would you believe that both linapple and applelin are taken? :) The former appears to use GitHub, the latter not so much. So I registered linappleii for that. @dabonetn, do you want to hang around this effort until it's behaving well under EmulationStation? Didn't seem like you're interested much beyond that, but happy to invite you along.

dabonetn commented 6 years ago

Yeah, I’m along. My repo is still available under retropie, so after this gets kicked off and working well, we’ll need to submit a change to swap them over to the new one.

From: Joseph Carter notifications@github.com Sent: Saturday, May 12, 2018 2:07 AM To: RasppleII/a2cloud a2cloud@noreply.github.com Cc: dabonetn dabone@gmail.com; Mention mention@noreply.github.com Subject: Re: [RasppleII/a2cloud] Find linapple ∀(linapple) and use it! (#37)

Thanks David, that might make things easier. If you wind up interested in something, please feel free to contribute or not as you can. We might need a new website at some point in the near future, but I don't think it needs to be anything impressive. I figured a GH org page would suffice unless someone has a mind for something better.

Would you believe that both linapple and applelin are taken? :) The former appears to use GitHub, the latter not so much. So I registered linappleii for that. @dabonetnhttps://github.com/dabonetn, do you want to hang around this effort until it's behaving well under EmulationStation? Didn't seem like you're interested much beyond that, but happy to invite you along.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/RasppleII/a2cloud/issues/37#issuecomment-388532991, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOke4F-cVSqPdETcGYwUmF01jlgvvER8ks5txnwdgaJpZM4TxogB.

knghtbrd commented 6 years ago

Okay, it's pretty much settled at this point: linappleii/linapple is our ∀(linapple), quite literally as I have just spent the past few weeks getting it all merged together. That doesn't yet close this issue as I don't think the merged tree is quite ready for us to use in a2cloud, but at this point it's a matter of cleaning up make install, making use of SDL_GetBasePath and SDL_GetPrefPath (which I've just backported from SDL2 into a shim), and redoing the Debian package stuff @ghedger has started.

knghtbrd commented 6 years ago

Hey @jmparis, do you want to join this little party? TL;DR: I've kinda adopted LinApple since it's been abandoned for so long along with these other folks as linappleii/linapple. We all have varying skills and time availability, but anyone who wants to work on it is welcome to contribute where they can.

ghedger commented 5 years ago

After a long and drawn-out battle with Git, I've got my repository up to sync with the work done this past spring (nice job, everyone!) and am back onto some emulator work, though it will be sporadic because of other projects, which latter I'll assume is the case with the other contributors.

We have a very serious problem writing files to disks in the emulator, which I found while playing an Apple game (yes, I still play them).  To test it, I punched in a 15-byte "siren" program in the assembler, BSAVE'ed it to disk, loaded it to another address, and sure enough, garbage.  This is my present focus.

I've put in several pull requests to linappleii/linapple and will be continuing to work against my own repo.

/https://rigaudonenterprises.com/ On 5/24/18 9:40 PM, Joseph Carter wrote:

Hey @jmparis https://github.com/jmparis, do you want to join this little party? TL;DR: I've kinda adopted LinApple since it's been abandoned for so long along with these other folks as linappleii/linapple https://github.com/linappleii/linapple. We all have varying skills and time availability, but anyone who wants to work on it is welcome to contribute where they can.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/RasppleII/a2cloud/issues/37#issuecomment-391932273, or mute the thread https://github.com/notifications/unsubscribe-auth/ADCQcLncwouHWy8kzY1238myntu00kmKks5t131BgaJpZM4TxogB.