libretro / opera-libretro

Port of 4DO/libfreedo to libretro.
61 stars 36 forks source link

[WiiU] Build recipe for WiiU? #171

Open Ploggy opened 2 years ago

Ploggy commented 2 years ago

I'm wanting to try and compile the Opera Core for WiiU but it doesn't have a build recipe in the Makefile and I don't know what to add.

What would I need to add to the Makefile so I can compile the Core?

Ploggy commented 2 years ago

I manged to Compile the Core, I have no idea if what I put in the Makefile was correct or not but when I boot a Game all I get is a blackscreen, no errors though.

This is what I added to the Makefile:

Nintendo Wii U

else ifeq ($(platform), wiiu) TARGET := $(TARGET_NAME)libretro$(platform).a CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) CFLAGS += -DGEKKO -DWIIU -DHW_RVL -DHW_WUP -mwup -mcpu=750 -meabi -mhard-float -Dppc -DMSB_FIRST STATIC_LINKING = 1

Ploggy commented 2 years ago

I get this error if I try to select "Start Core" to boot the bios 20211026_043125

trapexit commented 2 years ago

Looks like a null pointer is attempted to be resolved. Perhaps a bug in my new nvram handling code. Will have to look over it. Might be something with WiiU / static built targets.

Ploggy commented 2 years ago

Thank You, :)

vaguerant commented 2 years ago

I was just experimented with building 7369aa8, before the NVRAM changes, and there's no DSI error on Start Core. It does still blackscreen when doing either Start Core or loading content. Building the latest commit as of right now, d8aa7ce, I got the same result as Ploggy. Either we're both doing it wrong in the same way (entirely plausible) or there is another issue here besides the NVRAM handling.

I built with the following recipe. Like Ploggy (no disrespect!), I'm just fumbling around and seeing what happens. Do assume that this is wrong:

# Nintendo Wii U
else ifeq ($(platform), wiiu)
   TARGET := $(TARGET_NAME)_libretro_$(platform).a
   CC  = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
   CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
   AR  = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
   STATIC_LINKING = 1
   FLAGS += -DWIIU

In case you're not familiar, the Wii U is a big-endian platform, so one or both of the issues here may be endian-related.

trapexit commented 2 years ago

Yes, I'm aware the Wii U is big endian. It is also, AFAIK, a statically compiled and bundled with RA platform. Opera has not been tested on big endian platforms and contains little in the way of managing endianness. Without access to a big endian traditional build environment I suspect it will be difficult to fix this. The NVRAM change is likely related to the special way it's bundled and how the underlying functions work on the platform. I will need to investigate how to replicate that.

trapexit commented 2 years ago

OK. I still need to clean up some stuff that I misunderstood when I made the nvram change but #172 should address the particular issue in the screenshot.

As for whether it works on big-endian... I have a Wii U and it is hacked but I've never built anything for it and debugging might be a serious pita. I really don't know. But when I would make sure the bios is installed right and just try starting the core without a game. If still a black screen then probably some big-endian issue that we'll have to investigate further. That said I really don't know if it will be fast enough. As I understand... someone tried porting 4DO to Xbox360 and it wasn't fast enough. That seems surprising to me but :man_shrugging:

Ploggy commented 2 years ago

Ok, had a chance to compile Opera with that fix, it no longer crashes when starting the Core but I'm now just getting a Blackscreen as you suspected, Big-Endian stuff then? The bios is all present and correct ;)

trapexit commented 2 years ago

Big-Endian stuff then?

That would be my guess.