Homebrew Homebrew Development

  • Thread starter Thread starter aliak11
  • Start date Start date
  • Views Views 1,475,624
  • Replies Replies 6,048
  • Likes Likes 54
I think I understood the difference between, parallelism and concurrency.

So there isn't an advantage, in terms of performance, when using threads, within an application, on 3ds, right(except for things like running something while waiting for VBlank)?

You can run parallel threads on the 3DS, so you can gain some speed by doing that. But running multiple threads on the same core will only help if your current single threaded implementation is idling for a significant amount of time.
 
really? I thought that the two cores can't work at the same time. When bringing the thread on the syscore to sleep, are there any guide lines how long it should sleep.
E.g. in 3dscraft it just does 1 Mio Nano Seconds, but that seems to be guessed, is there a safer way?
 
really? I thought that the two cores can't work at the same time. When bringing the thread on the syscore to sleep, are there any guide lines how long it should sleep.
E.g. in 3dscraft it just does 1 Mio Nano Seconds, but that seems to be guessed, is there a safer way?
It depends on what you are trying to achieve, you can have a thread sleep until you trigger an event or sleep a set amount of time, how to figure out that time I don't know.
 
While writing I solved the problem I was going to ask by myself. Because the multi threading is cooperative it's not that important how much time the os is given by sleeping, it is much more important to reguarly sleep and let the os core do it's stuff which needs as much time as it needs.

Ok, I think I'm prepared for cooperative multi threading, I'm currently working on a bigger (orginal) homebrew application and I think it would be useful to use it there. Thank you for your answers they were very useful!
 
Hi all,
I am hoping to implement basic audio support into my project, and I am seeing quite a few ways of doing it; however I am confident that I would like to go with the simple option; loading audio in the xxxxxx_raw.bin format.

My question is what is the method to converting audio in a format such as WAV to the said _raw.bin format? Is there certain tools I should be using? (Audacity, maybe?)

I'm pretty confused as to where I should be going with it. Any support is kindly appreciated.
 
Hi all,
I am hoping to implement basic audio support into my project, and I am seeing quite a few ways of doing it; however I am confident that I would like to go with the simple option; loading audio in the xxxxxx_raw.bin format.

My question is what is the method to converting audio in a format such as WAV to the said _raw.bin format? Is there certain tools I should be using? (Audacity, maybe?)

I'm pretty confused as to where I should be going with it. Any support is kindly appreciated.

You can export an audio track with Audacity in uncompressed raw format. It uses .aiff extension by default, but you can rename it in whatever you want. I use .raw.

If you want to load a raw aufio stream in memory without any processing, remmber to convert your audio to a mono track before exporting it.
 
  • Like
Reactions: Deleted User
You can export an audio track with Audacity in uncompressed raw format.
Thanks for the info! I think I now remember hearing about Audacity having the ability to convert to RAW format.

Do you know what encoding I should use, by any chance? Or does it depend on what flags I have set in csndPlaySound?
 
Thanks for the info! I think I now remember hearing about Audacity having the ability to convert to RAW format.

Do you know what encoding I should use, by any chance? Or does it depend on what flags I have set in csndPlaySound?

It depends on the flags.
csnd supports 8-bit PCM, 16-bit PCM, ADPCM and PSG.
All audio files must be exported as mono track.
 
  • Like
Reactions: Deleted User
It depends on the flags.
csnd supports 8-bit PCM, 16-bit PCM, ADPCM and PSG.
All audio files must be exported as mono track.
Thanks; I was wondering what encoding types were supported.
At the moment, I have made my sound effects all mono and are being exported with 'signed 16-Bit PCM' encoding, so I am guessing that is going to be okay.
 
  • Like
Reactions: Ryuzaki_MrL
Is there currently any way to decompress rar files on the 3DS?

Maybe through zlib or something like that?
 
The same as you would on a desktop application, you will just need to cross compile it.

I apologize for being a noob, as I'm still kinda new to C, but how would one cross-compile for 3DS?

libarchive13 is already installed on my Ubuntu laptop. Putting in the appropriate header makes the compiler spit out errors. Would I have to compile and install libarchive for devkitPro? If so, how would I do that?
 
I apologize for being a noob, as I'm still kinda new to C, but how would one cross-compile for 3DS?

libarchive13 is already installed on my Ubuntu laptop. Putting in the appropriate header makes the compiler spit out errors. Would I have to compile and install libarchive for devkitPro? If so, how would I do that?

The same way as libpng, libjpeg, etc from installing sfillib

Seems libarchive's source is located here https://github.com/libarchive/libarchive

It has a configure.ac file so just run build/autogen.sh to generate the configure script. After that its just a matter of running configure, make, and make install

export PATH=$DEVKITARM/bin:$PATH
export CFLAGS=-march=armv6k -mtune=mpcore -mfloat-abi=hard -O3 -mword-relocations -fomit-frame-pointer -ffast-math
./configure --disable-shared --enable-static --host=arm-none-eabi --prefix=$DEVKITPRO/portlibs/armv6k --without-xml2
make
make install

If you have the source code and it uses configure then the above set of commands may work to compile it.

As for how to use the library there's always the documentation.


Heh this is proving tough to compile...

Anyway this is as far as I got after disabling pthreads in config.h (somehow it was still enabled) and removed <memory.h> include from archive_ppmd7.c

libarchive/archive_read_disk_posix.c:103:2: error: #error fchdir function required.
#error fchdir function required.
 
Last edited by TricksterGuy,
  • Like
Reactions: Deleted User
The same way as libpng, libjpeg, etc from installing sfillib

Seems libarchive's source is located here https://github.com/libarchive/libarchive

It has a configure.ac file so just run build/autogen.sh to generate the configure script. After that its just a matter of running configure, make, and make install

export PATH=$DEVKITARM/bin:$PATH
export CFLAGS=-march=armv6k -mtune=mpcore -mfloat-abi=hard -O3 -mword-relocations -fomit-frame-pointer -ffast-math
./configure --disable-shared --enable-static --host=arm-none-eabi --prefix=$DEVKITPRO/portlibs/armv6k --without-xml2
make
make install

If you have the source code and it uses configure then the above set of commands may work to compile it.

As for how to use the library there's always the documentation.


Heh this is proving tough to compile...

Anyway this is as far as I got after disabling pthreads in config.h (somehow it was still enabled) and removed <memory.h> include from archive_ppmd7.c

libarchive/archive_read_disk_posix.c:103:2: error: #error fchdir function required.
#error fchdir function required.

Tried searching for alternatives, came across this library called unrarlib: http://www.unrarlib.org/download.html

Maybe this would work?
 
Last edited by ,
I looked at the source code. I'd try dropping urarlib.c/h into your project and seeing if it compiles if it does great try using it. If not then see if you can fix the compile errors.

Alright, I'll try using this. Thanks again for the help!
 
I'm currently experimenting with 3D graphics and I faced a really wired problem. After hours I got my code to work. It renders what it should render, but some triangles flicker and move around, but only on real hardware, with Citra it works perfectly. Then I reduced the polygon count to just a cube and after seperating the projection and the modelview matrix uniform instead of multiplying them on the CPU solved the problem on real hardware.

But after changing back to the model I used before it still doesn't work. The setup with the cube and with the other model is exactly the same. I already dumped all data to files and analyzed which triangles flicker but they are valid and as metioned before it works as it should with Citra.

So what could be the problem, I don't know what to do?
 

Site & Scene News

Popular threads in this forum