Jump to content
zecoxao

let's make some nice bluray java homebrew :)

Recommended Posts

Regarding my idea of running BD-J homebrew off of USB by first booting from a bootdisc:

As part of BD-Live. BD-J Xlets can download files and put them onto the "Binding Unit Data Area (BUDA)", and subsequently merge these files with the file-system of the disc, thus be able to update the content of the disc. (Well not really, as you obviously can't write to a disc. But the content would get added to the Virtual File System, and thus accessible as if they were on the disc).

This is what I wanted to use. But rather than downloading files, you would manually put your BD-J homebrew onto the USB, and the bootdisc would then merge them.
Theoretically possible - but sadly useless on the PS3/PS4 - because unlike other blu-ray players they don't use a USB storage device for BUDA, but rather stores everything internally - not easily accessible for the user.

I wanted to add this functionality on the ISO with Ukko's Journey, but I don't see the point now. Because in order to access the BUDA dir, you need a jailbroken console. And as far as I understand, there's a big chance that a jailbroken console allows you to play a blu-ray disc folder structure from harddisk anyway. If this is true, you might as well just copy the whole structure onto HD, and run your homebrew like that.

Currently waiting for users on another forum to get back to me with some test results. Everyone seems to agree that you can run disc-stuff off of harddisk. But I wanna see someone test if that also applies to blu-ray discs before believing it. :):-)
I think there's a chance it only applies to actual game-discs.

Share this post


Link to post
Share on other sites
15 minutes ago, mr_lou said:

Regarding my idea of running BD-J homebrew off of USB by first booting from a bootdisc:

As part of BD-Live. BD-J Xlets can download files and put them onto the "Binding Unit Data Area (BUDA)", and subsequently merge these files with the file-system of the disc, thus be able to update the content of the disc. (Well not really, as you obviously can't write to a disc. But the content would get added to the Virtual File System, and thus accessible as if they were on the disc).

This is what I wanted to use. But rather than downloading files, you would manually put your BD-J homebrew onto the USB, and the bootdisc would then merge them.
Theoretically possible - but sadly useless on the PS3/PS4 - because unlike other blu-ray players they don't use a USB storage device for BUDA, but rather stores everything internally - not easily accessible for the user.

I wanted to add this functionality on the ISO with Ukko's Journey, but I don't see the point now. Because in order to access the BUDA dir, you need a jailbroken console. And as far as I understand, there's a big chance that a jailbroken console allows you to play a blu-ray disc folder structure from harddisk anyway. If this is true, you might as well just copy the whole structure onto HD, and run your homebrew like that.

Currently waiting for users on another forum to get back to me with some test results. Everyone seems to agree that you can run disc-stuff off of harddisk. But I wanna see someone test if that also applies to blu-ray discs before believing it. :):-)
I think there's a chance it only applies to actual game-discs.

A while ago I was messing around with bdj on my ps4 and since mine is "jailbroken" I could poke around in the bdj system files. The bdj running on ps4 is literally a wrapper written in java to run other applets and has a properties file which i believe you could change to enable usb booting. Only problem is you cant replace any files in most directories and im not sure anyone has figured out how to yet.

 

What I find the most interesting about bdj on the ps4 is that it is a wrapper. You can even find the java runtime compiler elf file inside of the disc player app which is extremely interesting because inside of the bdj wrapper you can actually find it including system libraries and other things.

Edited by MistyVermin

Share this post


Link to post
Share on other sites
22 minutes ago, MistyVermin said:

A while ago I was messing around with bdj on my ps4 and since mine is "jailbroken" I could poke around in the bdj system files. The bdj running on ps4 is literally a wrapper written in java to run other applets and has a properties file which i believe you could change to enable usb booting. Only problem is you cant replace any files in most directories and im not sure anyone has figured out how to yet.

 

What I find the most interesting about bdj on the ps4 is that it is a wrapper. You can even find the java runtime compiler elf file inside of the disc player app which is extremely interesting because inside of the bdj wrapper you can actually find it including system libraries and other things.

 

If it's possible to run BD-J homebrew from harddisk, then it's absolutely a bonus for the developer.

 

But I don't think it should be the focus of the end-user. A blu-ray disc costs less than half a euro. If you wanna play a homebrew game, you can spend that on a disc. If you don't own a burner, then have a mate burn a copy for you.

Share this post


Link to post
Share on other sites
On 2/1/2017 at 10:38 AM, mr_lou said:

 

If it's possible to run BD-J homebrew from harddisk, then it's absolutely a bonus for the developer.

 

But I don't think it should be the focus of the end-user. A blu-ray disc costs less than half a euro. If you wanna play a homebrew game, you can spend that on a disc. If you don't own a burner, then have a mate burn a copy for you.

The thing is, is that you could have one disc to run any other applets you would like to run on usb. Problem is there's still no way to edit the main BD-J files yet so well just have to wait and see. I might take a look at the main wrapper jar again to see if I can import any system libraries into my own BD-J applet and test it out. Also one last thing, last time I checked the BD-J jar I noticed some developer class files and functions and some 'passcode' inside the code involving developer stuff, not sure exactly what it does but ill probably take another look.

 

Also I highly suggest you check out the BD-J wiki page for more info, there's some other interesting stuff such as signed BD-J applets that can do some cool stuff like write to the hard drive, connect to the network, read other parts of the disc or even run other BD-J applications. But it may not be possible with a few of those features as they are disabled in the properties files but if I remember correctly there was nothing that disabled the running of other BD-J apps.


EDIT:

Just went back to check and BD-J has local storage access but I imagine its only for signed apps. Here's the part of the properties file that shows it does have access to local storage. If it did not have local storage access it would usually be commented out like the top line but it appears to have some sort of functionality.
 

#bluray.bindingunit.root=/OS/BUDA/
bluray.localstorage.level=1
bluray.localstorage.maxlevel=5
bluray.localstorage.removable=NO
bluray.localstorage.upgradable=NO

 

Edited by MistyVermin

Share this post


Link to post
Share on other sites

I finally got a blu ray burner but I honestly have no clue how to actually get bdj to run on these blu rays. I put the AVCHD directly on the root of the disc but my ps4 is recognizing it as unrecognized content. It would be nice if I could get some help so I can test out some of this stuff i've been looking into. Thanks!

Edited by MistyVermin

Share this post


Link to post
Share on other sites

For discs, you don't use an AVCHD folder, but rather a BDMV folder.

I suggest you start by downloading this:

https://github.com/oliverlietz/bd-j

Lots of useful tools there.

This here is also helpful: Old BD-J mail correspondence.

http://markmail.org/search/?q=[BD-J-DEV]

 

For a blu-ray disc you need a blu-ray disc folder structure. AVCHD is something else.

Take a look inside the Funky Fresh ISO and you will see what's needed. You can use that as a template, but you will need to make a few changes.

The HDCookBook project at Github above contains the tools you need.

 

Here's a short guide:

  1. Copy your JAR into the BDMV/JAR folder.
  2. Use the BDJO tool from HDCookBook to convert the BDMV/BDJO/00000.bdjo file into an XML file
  3. Edit the XML file to change Java class into your own. If you're using the minimal SDK, your class is probably org.homebrew.MyXlet. In order to use the Funky Fresh disc-template, you need to use the same applicationId and organizationId
  4. Use the BDJO tool from HDCookBook again to convert the XML back into 00000.bdjo

All of this still only works if you're signing your Xlet with the same keystore Luis used, and I'm not sure he included that file in the zip, but if you're lucky, he used the keystore file included in the minimal SDK.

 

If you still can't get it running, mail a zip to me, then I'll take a look and mail a zip back.

 

EDIT: Also, when burning, remember to use UDF 2.5 filesystem. More info about that in the readme file of the Funky Fresh project.

Edited by mr_lou

Share this post


Link to post
Share on other sites

Gotta share this:

 

Turns out, BD-J is also used by a Japanese adult animation company to produce adult animation games for Blu-ray Players and game consoles with Blu-ray drives. They call it "BD-GAME". :-)

 

http://bd-game.product.co.jp/index2.html
http://bd-game.product.co.jp/about.html

 

I guess BD-J in general is used more than any of us knows. Not easy to know when no official label (other than "BD-J" of course) has been agreed upon.

Share this post


Link to post
Share on other sites

Did anyone ever figure out BD exploit hosting?

 

Since @XVortex created a java payload version of PS4HEN that doesn't require you to push it using a PC, thanks to his web/java version, I have searched for a way to get this working without a web server needed.

It comes to my mind that PS4 supports BD-J (for Java) for it's Blu-ray Live (BD-Live) and that it has persistent storage and ability to do virtual storage as well.

The process is simple:

  • create a menu for Blu-ray to call ps4-hen-vtx that will load payload.js and the rop.js
  • burn the Blu-ray disc (create an iso)
  • play back in PS4 and click on the menu to load the payload

I will be playing with this more this weekend, but meanwhile, if @XVortex or someone else wants to give a try, go ahead. That will be a perfect so the PS4 is independent of a web server.

Share this post


Link to post
Share on other sites

I know there were a few people looking into it, and some getting pretty far too, but I don't think anyone ever completed anything.

I guess there just wasn't enough interest.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×