rhaleblian / dslibris

An ebook reader for the Nintendo DS, DS Lite, and DSi.
73 stars 5 forks source link

Get this to run successfully with a modern devkitARM toolchain -- specifically, deal with FAT #1

Closed rhaleblian closed 5 years ago

rhaleblian commented 6 years ago

I don't even get the startup screen when building under today's devkitPro.

rhaleblian commented 6 years ago

Built toolchain circa r43, runs on target. Try r46.

rhaleblian commented 6 years ago

Too time-consuming to investigate any other versions of the toolchain.

rhaleblian commented 5 years ago

Reopening due to inquiries from upstream. Note that toolchain versions later than the one cited in the README fail to initialize the FAT filesystem. That's a showstopper.

WinterMute commented 5 years ago

How are you testing your builds? (i.e. what card etc) currently desmume is bypassing dldi related things for binaries built with recent tools because it can't detect them as homebrew due to the changes we made to get DSi code booting on 3DS. See https://github.com/TASVideos/desmume/blob/37afaefa2f3c0cb4bb1c2a6a71485dc27d429e1c/desmume/src/NDSSystem.cpp#L622

I've made packages of the necessary libs & built dslibris with latest tools & the binary gets as far as displaying a splash screen at least when booted via hbmenu on 3DS. I'm not entirely sure why atm but most flashcards can't seem to boot the latest binaries, still to be investigated properly. In some cases this can be fixed by replacing the flashcard menu with https://github.com/devkitPro/nds-hb-menu

All I've really done atm is rework the Makefiles - since adding proper DSi support it's no longer possible to just flatten the elf & obtain a working binary which may have been your main problem.

The current changes are at https://github.com/WinterMute/dslibris/tree/fixes-for-latest-tools which I can PR if you want. You can grab pre-built portlibs using (dkp-)pacman - -S nds-portlibs will install all the ones I added or you can install them individually.

rhaleblian commented 5 years ago

Interesting! If you get to the splash graphic on the top screen and an empty bottom screen, that's better mileage. I'm using a CycloDS card, or desmume on CentOS. The mileage i'm citing is when using the card on the h/w. I'll look at your changes.

rhaleblian commented 5 years ago

BTW if you did get as far as the splash and book menu, you can put font/ and book/ dirs from the data/ dir into your FAT root and possibly get a list of books.

WinterMute commented 5 years ago

Had a chance to dig out some flashcarts to test with.

Using the -g option to set gamecode & maker code causes various flashcard menus to fail to launch the binary or just fail to dldi patch. Removing that allows the binary to boot on all the cards I currently have available, even without using hbmenu.

With the fonts and books available it's doing something but seems to not be rendering text at all. I've attached a logfile but I'm not really sure what I might be looking for beyond this point.

dslibris.log

rhaleblian commented 5 years ago

This log looks good. Fonts are being loaded and being hit and cached when books are parsed. This could not happen if the FAT subsystem couldn't start up. We need to suss out why glyphs don't actually display for you.

rhaleblian commented 5 years ago

Still can't get a build the initializes FAT successfully. And the libfatdir example doesn't work for me either. My build environment or cart are hosed in some way. I've gotta resolve this independently of dslibris before getting anywhere.

A shame since i'd like to take a PR from you and get all this updated.

BTW, were you installing the support libraries (aka tool/) somewhere different? And, changing the subject: does the arm7 code need to exist at all?

rhaleblian commented 5 years ago

Oh yeah, i was going to try the nitrofs example -- does one need to copy any files apart from the .nds to the cart? Or is the filesystem built into the .nds?

rhaleblian commented 5 years ago

BTW, were you installing the support libraries (aka tool/) somewhere different?

nm, i see what you did -- nice. https://github.com/devkitPro/pacman-packages/tree/master/nds

WinterMute commented 5 years ago

Still can't get a build the initializes FAT successfully.

Does your card auto DLDI patch or is it an old menu?

A shame since i'd like to take a PR from you and get all this updated.

BTW, were you installing the support libraries (aka tool/) somewhere different?

I'm installing the support libs to $(DEVKITPRO)/portlibs/nds - they're all available via pacman now - see https://devkitpro.org/wiki/devkitPro_pacman. You can grab all of them with sudo (dkp-)pacman -S nds-portlibs or individually if you prefer. (dkp-)pacman -Ss should show you what nds packages are available.

And, changing the subject: does the arm7 code need to exist at all?

It probably doesn't if we add the brightness control stuff to libnds.

Oh yeah, i was going to try the nitrofs example -- does one need to copy any files apart from the .nds to the cart? Or is the filesystem built into the .nds?

The filesystem is built into the .nds but access is done via libfat so if you're having trouble with FAT initialisation then that's not likely to work either.

If it's easier I can still be found on IRC, see https://devkitpro.org/wiki/Community_Portal

rhaleblian commented 5 years ago

Does your card auto DLDI patch or is it an old menu?

Damn good question, my memory says the CycloDS autopatches. Maybe Google can confirm that. Will poke around. Frankly, this cart seems to fallen into disrepute. Can you recommend a cart you use, to make our mileage more equal?

It probably doesn't if we add the brightness control stuff to libnds.

Ok. That's the only bit of new logic i can recall injecting.

If it's easier I can still be found on IRC, see https://devkitpro.org/wiki/Community_Portal

We can do that. You're in GMT? I'm in P[SD]T USA.

NM about the NitroFS question, i was able to build the example and run it in desmume, and will try again on the hw. If that works, i will try to describe the filesystem that way, just as a what-if, and see if i can get running again.

if you're having trouble with FAT initialisation then that's not likely to work either

Might be a hint in there then...

rhaleblian commented 5 years ago

FAT on the CycloDS Evo was fixed by DLDI patching manually. FAT on DeSmuME was fixed by DLDI patching MPCF manually.

Builds are working with all latest pacman releases except Freetype, which we'll deal with separately. The code has been reorged into the current project template and pushed to the modern branch.

rhaleblian commented 5 years ago

Resolved via https://github.com/rhaleblian/dslibris/pull/7