kilograham / jpsx

Java PSX emulator
GNU General Public License v3.0
35 stars 6 forks source link

Post the code #1

Closed jvilk closed 5 years ago

jvilk commented 9 years ago

Hey Graham,

I actually found a copy of the JPSX source, and have it sitting in a private GitHub repository right now. Despite your assertions to the contrary, the source code looks quite clean and well-commented. It also builds, and works on a wide variety of games!

It would be great if you chose a license (the current version I have specifies GPL2) and officially uploaded the source code. I'd be willing to make any surface-level changes required to get JPSX to build on modern versions of the JDK, although I cannot promise much on the bug-fixing front as I am unfamiliar with PSX hardware.

Even if you are not involved, putting the code up on GitHub will give the project greater exposure, and will let the community improve the emulator itself.

So, what do you say? If you want, I can fork this repository, and open up a pull request that contains all of the source code to JPSX; you'll only have to click a button.

kilograham commented 9 years ago

Ah - I did send it out to a few people. Yeah I was going to use Apache License 2… If you want to add that (or tell me why GPL2 is better) and put the it on public github and maybe add me that’d be great. I do want it out there, I just never seem to find the time….

I can push my own branch if I have any newer code - I did lose my most recent version of the code but I do have others.

Note that maybe actually having it out there, will force me to pay more attention.

Maybe I’ll actually get around to making some of the cleanups I had in mind (since I wrote it initially for JDK4, it could be updated… I need to throw in a few missing “volatile”s for sure). Also clearly some of the assumptions about what was and wasn’t fast on the JVM no longer hold. Though the only thing that has consistently gotten slower over time has been AWT based display copy-up… so i doubt it runs very well off the bat without an OpenGL bllit at least - do you have the lwjgl version?

Frankly it should be possible nowadays to model the entire GPU rendering options in a single custom shader (certainly you can approximate with OpenGL anyway)…

So, basically if you agree (I mean you don’t really have to given the license) to sort of run a little interference for me - keep me in the loop; I’ll try and contribute some more that’d be great. I’d hate people to rush off and “fix” things I already know how to, or had a plan on, though of course they are free to fork it and do so.

The main thing is that it isn’t trivial for people to get running, so that was my main other thing - I didn’t want people bitching it didn’t work (and me not having time to help out) - I know for a fact it can run 4 games at once full speed on 8 yr old h/w!!!

Note also, I had written a c++ emu before - there are some silly things in the CD handling I should fix soon which for example break TombRaider (something related to it watching the CD spin to make sure it was in the right place to play before turning up the volume).

Sorry, a bit vague… but since this thing is now 10 years old, let’s get it out there and improved

Yes, I am a bit embarrassed by the code, but yes there is worse out there ;-)

Thanks for following up with me… didn’t catch your name ;-)

Graham.

On Nov 23, 2014, at 5:19 PM, jvilk notifications@github.com wrote:

Hey Graham,

I actually found a copy of the JPSX source, and have it sitting in a private GitHub repository right now. Despite your assertions to the contrary, the source code looks quite clean and well-commented. It also builds, and works on a wide variety of games!

It would be great if you chose a license (the current version I have specifies GPL2) and officially uploaded the source code. I'd be willing to make any surface-level changes required to get JPSX to build on modern versions of the JDK, although I cannot promise much on the bug-fixing front as I am unfamiliar with PSX hardware.

Even if you are not involved, putting the code up on GitHub will give the project greater exposure, and will let the community improve the emulator itself.

So, what do you say? If you want, I can fork this repository, and open up a pull request that contains all of the source code to JPSX; you'll only have to click a button.

— Reply to this email directly or view it on GitHub https://github.com/grahamsanderson/jpsx/issues/1.

kilograham commented 9 years ago

Note actually if you point me at your private repo first, I can at least pull and build it on OS X, and see if it works - and spend a few hours fixing it up over thanksgiving here this week, if it doesn’t

what platforms are you running on?

On Nov 23, 2014, at 5:19 PM, jvilk notifications@github.com wrote:

Hey Graham,

I actually found a copy of the JPSX source, and have it sitting in a private GitHub repository right now. Despite your assertions to the contrary, the source code looks quite clean and well-commented. It also builds, and works on a wide variety of games!

It would be great if you chose a license (the current version I have specifies GPL2) and officially uploaded the source code. I'd be willing to make any surface-level changes required to get JPSX to build on modern versions of the JDK, although I cannot promise much on the bug-fixing front as I am unfamiliar with PSX hardware.

Even if you are not involved, putting the code up on GitHub will give the project greater exposure, and will let the community improve the emulator itself.

So, what do you say? If you want, I can fork this repository, and open up a pull request that contains all of the source code to JPSX; you'll only have to click a button.

— Reply to this email directly or view it on GitHub https://github.com/grahamsanderson/jpsx/issues/1.

kilograham commented 9 years ago

finally real email address graham.sanderson@gmail.com mailto:graham.sanderson@gmail.com - easier.

On Nov 23, 2014, at 5:19 PM, jvilk notifications@github.com wrote:

Hey Graham,

I actually found a copy of the JPSX source, and have it sitting in a private GitHub repository right now. Despite your assertions to the contrary, the source code looks quite clean and well-commented. It also builds, and works on a wide variety of games!

It would be great if you chose a license (the current version I have specifies GPL2) and officially uploaded the source code. I'd be willing to make any surface-level changes required to get JPSX to build on modern versions of the JDK, although I cannot promise much on the bug-fixing front as I am unfamiliar with PSX hardware.

Even if you are not involved, putting the code up on GitHub will give the project greater exposure, and will let the community improve the emulator itself.

So, what do you say? If you want, I can fork this repository, and open up a pull request that contains all of the source code to JPSX; you'll only have to click a button.

— Reply to this email directly or view it on GitHub https://github.com/grahamsanderson/jpsx/issues/1.

jvilk commented 9 years ago

I'm on OSX, successfully built it a year or so ago on OSX, and was able to play a few games in it.

Yeah I was going to use Apache License 2… If you want to add that (or tell me why GPL2 is better) and put the it on public github and maybe add me that’d be great.

The Apache license might be friendlier. I'll look into it for you.

Though the only thing that has consistently gotten slower over time has been AWT based display copy-up… so i doubt it runs very well off the bat without an OpenGL bllit at least - do you have the lwjgl version?

Can't remember! I do remember that it ran completely full speed on my laptop, but that shouldn't be surprising -- it's a 1.7 GHz Core i5!

Also clearly some of the assumptions about what was and wasn’t fast on the JVM no longer hold.

This is true. I noticed that your slide included numbers for the 'client' and 'server' version of HotSpot. Modern versions of Java ship both, and I believe determine which to use dynamically based upon your computer's specifications. I have never seen a case where it defaults to the client version -- all modern computers are fast enough to run the 'server' edition.

So, basically if you agree to sort of run a little interference for me - keep me in the loop; I’ll try and contribute some more that’d be great.

Sure. I can be responsive on issues and such.

The main thing is that it isn’t trivial for people to get running

Untrue. It was fairly painless from what I remember.

Note actually if you point me at your private repo first, I can at least pull and build it on OS X

I just added you as a collaborator!

Also, my name is John Vilk. Nice to meet you! I've actually written a JVM for a research project, so I know quite a bit about JVM bytecode.

jarodcanal commented 9 years ago

Hi Graham,

My name is Brice.

Long ago (when java 1.3 was still in beta), I made a NES emu, called Javanese, as I was learning Java on my own. It was full of flaws, with poor design and huge mistakes (not always OO oriented, lots of copy paste,...), so I would not be in a good position to criticize your jpsx work :-) The emulator could run some games, and was more interesting as a learning purpose than doing an applet to display time. Later, I also ported an opensource NES emu in C to Playstation (under the name Nestation)(again, that one was too slow, without sound, and with graphic glitches...). Yes, I grew up with nes, snes, psone,...

I remember I was amazed when you posted the video with multiple instances running in parallel. I also remember that reading your slides I thought that I could apply some ideas (e.g. code units) to rewrite a NES emu, but never found the time (too bad, as I should be able to do it with less design flaws after so long). I would be very interested in having a look at jpsx sources.I tried to contact you last year for that, but no luck. Hope you will publish your work someday. So, if you or John could provide access to jpsx sources, that would be a nice present for this Christmas ;-)

Regards

kilograham commented 9 years ago

Hi Brice,

It is your lucky day/month… I’m actually in the process of open sourcing (someone else convinced me).

I’m re-familiarizing myself with the code so I can write a few docs (and of course getting sucked into fixing a few things in passing). It plays a few games (the ones I had) pretty perfectly, but generally needs some work. I wan’t to document next steps and point out areas people can help.

I should have it on github by the end of the month.

Ping me again if I don’t.

On Dec 26, 2014, at 11:45 AM, jarodcanal notifications@github.com wrote:

Hi Graham,

My name is Brice.

Long ago (when java 1.3 was still in beta), I made a NES emu, called Javanese, as I was learning Java on my own. It was full of flaws, with poor design and huge mistakes (not always OO oriented, lots of copy paste,...), so I would not be in a good position to criticize your jpsx work :-) The emulator could run some games, and was more interesting as a learning purpose than doing an applet to display time. Later, I also ported an opensource NES emu in C to Playstation (under the name Nestation)(again, that one was too slow, without sound, and with graphic glitches...). Yes, I grew up with nes, snes, psone,...

I remember I was amazed when you posted the video with multiple instances running in parallel. I also remember that reading your slides I thought that I could apply some ideas (e.g. code units) to rewrite a NES emu, but never found the time (too bad, as I should be able to do it with less design flaws after so long). I would be very interested in having a look at jpsx sources.I tried to contact you last year for that, but no luck. Hope you will publish your work someday. So, if you or John could provide access to jpsx sources, that would be a nice present for this Christmas ;-)

Regards

— Reply to this email directly or view it on GitHub https://github.com/grahamsanderson/jpsx/issues/1#issuecomment-68150487.

rackarm commented 9 years ago

Hi Graham,

Same as Brice, I would be very interested in having a look at the sources of jpsx. I'm a student, I have already wrote some small vm and I'm learning compilation/emulation things :)

Pierre

jarodcanal commented 9 years ago

(Late) Happy new year everybody,

How is the open sourcing process going? I hope it is still going on, but I guess end of year was not the easiest moment to start this kind of task ;-)

Regards Brice

kilograham commented 9 years ago

Sorry, have been super busy and haven't had a chance to work on it. Hopefully I should be freed up by next weekend.

kilograham commented 9 years ago

Don't give up - so busy this week that I haven't even hooked up my Raspberry Pi 2 that I got on Monday. Looking forward to seeing if the emu runs on that.

New home will be here https://github.com/jpsx

jvilk commented 9 years ago

Hah, same boat w/ schedule and having an unopened Raspberry Pi 2.

rackarm commented 9 years ago

Hi,

Do you have some news on the project ?

Thank you :) Pierre

vujadin commented 8 years ago

Any chance this repo will finally get the source ? Don't let JPSX to die

Rogerjwilkinson commented 6 years ago

G'day @jvilk fancy seeing you here ^^

I hope this isnt overstepping my boundaries but was wondering if you had decided to release this source anywhere officially in the end @grahamsanderson I would VERY much appreciate having the chance to poke around with this as a learning experience.

Thanks in advance!

kilograham commented 6 years ago

Here it is… last changes were that I realized that the “speculative execution” was a big problem (and largely unneeded on modern processors)… this was code that searches ahead for code to compile based on control flow. it is usually fine with overlays/self modifying code because those usually flush the instruction cache (which is detected), however at least FF7 does not do so. Turning this off makes a lot more things run.I haven’t done anything recently (the last thing I did was related to running it on Pi… which I may look at again). I had been dealing with a lot of things the last few years, but now things are much better, so may take the time to work on this again.Thanks for the interestGraham.P.S. just sent you a blob, but if you make changes I could merge them into my git repo.On Mar 4, 2018, at 2:44 AM, Rogerjwilkinson notifications@github.com wrote:G'day @jvilk fancy seeing you here ^^I hope this isnt overstepping my boundaries but was wondering if you had decided to release this source anywhere officially in the end @grahamsanderson I would VERY much appreciate having the chance to poke around with this as a learning experience.Thanks in advance!—You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub, or mute the thread.

kilograham commented 6 years ago

Here it is… last changes were that I realized that the “speculative execution” was a big problem (and largely unneeded on modern processors)… this was code that searches ahead for code to compile based on control flow. it is usually fine with overlays/self modifying code because those usually flush the instruction cache (which is detected), however at least FF7 does not do so. Turning this off makes a lot more things run.

I haven’t done anything recently (the last thing I did was related to running it on Pi… which I may look at again). I had been dealing with a lot of things the last few years, but now things are much better, so may take the time to work on this again.

Thanks for the interest

Graham.

On Mar 4, 2018, at 2:44 AM, Rogerjwilkinson notifications@github.com wrote:

G'day @jvilk https://github.com/jvilk fancy seeing you here ^^

I hope this isnt overstepping my boundaries but was wondering if you had decided to release this source anywhere officially in the end @grahamsanderson https://github.com/grahamsanderson I would VERY much appreciate having the chance to poke around with this as a learning experience.

Thanks in advance!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/grahamsanderson/jpsx/issues/1#issuecomment-370212119, or mute the thread https://github.com/notifications/unsubscribe-auth/AAjJQikqlR_H6WEfrQ2yrDju-8EQ4dapks5ta6logaJpZM4C_qCG.

jarodcanal commented 6 years ago

Hi Graham, Would it be possible to get a blob too until you upload source code? I am still interested in testing it on my computer and on my raspberry pi 2. Thanks.

kilograham commented 6 years ago

there you go

On Mar 5, 2018, at 8:34 AM, jarodcanal notifications@github.com wrote:

Hi Graham, Would it be possible to get a blob too until you upload source code? I am still interested in testing it on my computer and on my raspberry pi 2. Thanks.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/grahamsanderson/jpsx/issues/1#issuecomment-370437697, or mute the thread https://github.com/notifications/unsubscribe-auth/AAjJQuGQB1HEln1Vh7JYLyW62A7f0t62ks5tbUzugaJpZM4C_qCG.

m35 commented 6 years ago

As the developer of another noteworthy Java PlayStation tool, I have been very interested in this project. It seems the conversation above was done externally so none of the attachments were included. The source code would be like gold to me.

jarodcanal commented 6 years ago

Indeed, I did not received the blob :-( I double checked my mail box, including spam, my github account,... but could not find it. Here is my email if you can send it directly: jarodcanal@yahoo.fr Thanks in advance.

kilograham commented 6 years ago

Note it doesn’t currently work on the pi (the AWT blit is WAY too slow)… i now have a better idea about the DISPMAN stuff on Pi, so at some point I’ll try to figure out OpenGL ES again - of course you are welcome to do so

On Mar 5, 2018, at 8:34 AM, jarodcanal notifications@github.com wrote:

Hi Graham, Would it be possible to get a blob too until you upload source code? I am still interested in testing it on my computer and on my raspberry pi 2. Thanks.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/grahamsanderson/jpsx/issues/1#issuecomment-370437697, or mute the thread https://github.com/notifications/unsubscribe-auth/AAjJQuGQB1HEln1Vh7JYLyW62A7f0t62ks5tbUzugaJpZM4C_qCG.

m35 commented 6 years ago

@grahamsanderson Replying directly to this thread via email does not include the attachments you are adding. My email is jpsxdec@gmail.com. Please forward the attachments there.

Rogerjwilkinson commented 6 years ago

Awesome, I got the attachment, thanks so much @grahamsanderson.

I'll spare you some extra work and foward it along to @jarodcanal and @m35 as well. You should both have it in the emails you listed now.

m35 commented 6 years ago

@Rogerjwilkinson Did you send the attachment? I haven't received any emails at jpsxdec@gmail.com in Inbox, Spam, or anywhere else.

m35 commented 6 years ago

@grahamsanderson @jarodcanal @Rogerjwilkinson Could someone try again emailing me the attachment(s) at jpsxdec@gmail.com and [spam-reduction]@yahoo.com ? I'd really appreciate it!

Rogerjwilkinson commented 6 years ago

@m35 I've resent it both of those emails. The yahoo account should definitely have gotten it as jarod got his copy in a yahoo address.

m35 commented 6 years ago

Thank you everyone for helping! I finally got code that I have been curious about for over 10 years.

@jvilk You mentioned you have a copy of the code in a private repo. Do you know if it is identical to this tarball? I would be quite interested in comparing them.

jvilk commented 6 years ago

@m35 I shared the private repo with @grahamsanderson and we poked at it for a bit, but ultimately both of our free time dwindled away and it has sat untouched for awhile. Heck, I even tried to improve the sound emulation, but cannot remember if I actually succeeded in getting my changes to work. I'll leave it to @grahamsanderson to decide if he wants to share anything in that private repo. I'm not going to be able to contribute anything to the open sourcing effort until after September; I'm finishing up my PhD / finding a job / planning to move. :)

The private repo does have a fair bit of documentation in the wiki that I wrote while exploring the codebase, which should be shared once this is open source. @grahamsanderson feel free to continue using the private repo if it's convenient.

(@Rogerjwilkinson Hello! The web is a small place. :) )

kilograham commented 6 years ago

Cool - yeah let’s invite people to the private repo; I have a few changes to push probably as the code I sent out to as from my local git clone of that but with some I pushed changes

We can also put together a list of must haves before open sourcing further

Certainly docs on how to run it and a swish list - I have several

Note that I now have an Ubuntu (with windows 10 partition too) box as well as my MBP so I can check it out across them

I have a couple of Raspbery Pis so at some point I’ll give that a go again (I wasn’t quite sure how to get OpenGL ES running last time I tried) - though I actually now have very good access to folk over at RP

Sent from my iPhone

On Mar 8, 2018, at 12:14 PM, John Vilk notifications@github.com wrote:

@m35 I shared the private repo with @grahamsanderson and we poked at it for a bit, but ultimately both of our free time dwindled away and it has sat untouched for awhile. Heck, I even tried to improve the sound emulation, but cannot remember if I actually succeeded in getting my changes to work. I'll leave it to @grahamsanderson to decide if he wants to share anything in that private repo. I'm not going to be able to contribute anything to the open sourcing effort until after September; I'm finishing up my PhD / finding a job / planning to move. :)

The private repo does have a fair bit of documentation in the wiki that I wrote while exploring the codebase, which should be shared once this is open source. @grahamsanderson feel free to continue using the private repo if it's convenient.

(@Rogerjwilkinson Hello! The web is a small place. :) )

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

ccreeten commented 6 years ago

Hey @grahamsanderson and others! Some time ago I started (and restarted) and have been toying with a basic Java PSX emulator myself. I'm not far in, but I was really interested in continuing on it after the summer, mostly for learning and self improvement. On an off moment thinking about some unrelated optimization problem, I remembered reading your presentation and searched for it again. That way I stumbled on this.

It is a very cool project I think. Are there any active plans for this? Would you love to see it becoming a community thing?

I would also find it very interesting to read and learn more about the techniques used in this. Would it be possible to get access to the source in any way as well (like the people above)?

Thanks for your time!

msikma commented 5 years ago

Hi there. I'm wondering if there's still anything going on with this project.

I hope I'm not being rude when I'm saying this, but I really don't understand why there's such a need for secrecy just for an emulator. There's nothing wrong with releasing projects when they're not entirely done yet. I'm just not sure what everyone is so afraid of here—especially since people have been requesting the code for this for years.

I personally have an old version of the code from 2007 (at least, that's what the copyright headers say). I've always held onto it without releasing it, out of respect for the author, and with the belief that he'll do the right thing and eventually release it. It's now been 12 years since 2007. I really just don't understand it. If it's broken or not working perfectly you could always release it with a disclaimer and note that it's a dev-only release.

Still, I understand that neither I nor anyone else is entitled to this project and that it's ultimately up to the developers. I just hope that you'll agree there's really no need to wait for something to be perfect to release it, especially when people have been very interested in it since the first teaser video came out years ago. A public repo would probably facilitate development, too, rather than impede it.

kilograham commented 5 years ago

Quite right… its not secret, I have just always wanted to get around to cleaning it up some - I guess selfish.

There is some newer code than you have… let me find that, check it is working.…. Ping me again in 2 weeks, and if I haven’t done anything I’ll just release it as is

On Aug 4, 2019, at 7:43 AM, Michiel Sikma notifications@github.com wrote:

Hi there. I'm wondering if there's still anything going on with this project.

I hope I'm not being rude when I'm saying this, but I really don't understand why there's such a need for secrecy just for an emulator. There's nothing wrong with releasing projects when they're not entirely done yet. I'm just not sure what everyone is so afraid of here—especially since people have been requesting the code for this for years.

I personally have an old version of the code from 2007 (at least, that's what the copyright headers say). I've always held onto it without releasing it, out of respect for the author, and with the belief that he'll do the right thing and eventually release it. It's now been 12 years since 2007. I really just don't understand it. If it's broken or not working perfectly you could always release it with a disclaimer and note that it's a dev-only release.

Still, I understand that neither I nor anyone else is entitled to this project and that it's ultimately up to the developers. I just hope that you'll agree there's really no need to wait for something to be perfect to release it, especially when people have been very interested in it since the first teaser video came out years ago. A public repo would probably facilitate development, too, rather than impede it.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/kilograham/jpsx/issues/1?email_source=notifications&email_token=AAEMSQXJEOWJ5X6KET64W7TQC3FFLA5CNFSM4AX6UCDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3QBBFY#issuecomment-518000791, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEMSQVRFDTM7ARAQYL7TULQC3FFLANCNFSM4AX6UCDA.

msikma commented 5 years ago

Wow, that's great news. Thanks for responding! I should stress, I don't want you to feel rushed or anything either. It's perfectly understandable if you don't have the time. But I'm glad you're OK with releasing the code in principle 🙂

kilograham commented 5 years ago

Yeah I don’t have the time or effort (it seems), but will give it one last effort!

On Aug 4, 2019, at 3:49 PM, Michiel Sikma notifications@github.com wrote:

Wow, that's great news. Thanks for responding! I should stress, I don't want you to feel rushed or anything either. It's perfectly understandable if you don't have the time. But I'm glad you're OK with releasing the code in principle 🙂

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/kilograham/jpsx/issues/1?email_source=notifications&email_token=AAEMSQQJHWLTNRFBOE67DEDQC46GRA5CNFSM4AX6UCDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3QJMYY#issuecomment-518035043, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEMSQSXETWLTSYRQBR6UG3QC46GRANCNFSM4AX6UCDA.

m35 commented 5 years ago

Much like @kilograham I would have put together a release candidate for approval already, but I got hung up on wanting to construct a commit history that somewhat reflected the actual dates the code was written. And for any variations that might be floating around, a commit history of the changes... but no matter. I'm open to helping in any way that might be useful.

kilograham commented 5 years ago

Code posted... will have more of a play to get it working on Linux that likely required working OpenGL for blit

msikma commented 5 years ago

That's really awesome. Thank you! Gonna have a look through this code soon. 😊