Homebrew NDS Music Player

2-bias

Well-Known Member
Member
Joined
Jul 30, 2009
Messages
142
Trophies
0
Location
Germany
XP
95
Country
Gambia, The
KazoWAR said:
2-bias said:
caitsith2 said:
Current build is now in my git. https://github.com/CaitSith2/SSEQPlayer, and will always be there from this point on.

So there is a newer version than 1.0g? I don't get it how to download stuff from github
blush.gif

https://github.com/CaitSith2/SSEQPlayer/raw...usic_Player.nds

Thanks. I never expected the download under the raw things.
 

caitsith2

Well-Known Member
Member
Joined
Jan 16, 2004
Messages
350
Trophies
2
Age
43
Location
a secret location 93 million miles from the sun
Website
www.caitsith2.com
XP
2,476
Country
Canada
dicamarques said:
coolness said:
dicamarques said:
Did anyone tried this with Dsi mode, to see if it works spirit tracks?
BTW does the windows program detects the roms in subfolders?

It dont read the music files from spirit tracks
also with the latest version
frown.gif
Yes but in the last version it says theres not enough memory, so probably in dsi mode theres enough memory, right?

True that DSi mode does have enough ram, but I have yet to find a 100% reliable way to verify that we actually have the ram. Any code I have attempted to write, seems to return inconsistent results.

The basic check for ram, is to write to some range of main ram, in 0x2000000 to 0x23FFFFF, with one value, then write to a mirror location between 0x2400000 to 0x27FFFFF with a different value, then reread the original location. If the original location has the new location value, then you only have 4MiB of ram. If however, the new location has the value you originally wrote there, then you have at least 8MiB of Ram. (On the DS/DSLite, this should only be the case for Debug units.)

If at least 8MiB is detected, then we repeat the process one more time, between 0x2800000 to 0x2FFFFFF. IIRC, DSi mode has 16MiB of ram.

Any of the code I have written has not been 100% reliable in detecting available ram size, so its still hard coded as if only 4MiB is present.

A DSi mode flash cart, or a DSiWare exploit is required to get into DSi mode. I have tried the DSiWare exploit method of running this, however, this will require rewriting in order to use the SD card slot in DSiWare exploit mode. DSi flash cart mode shouldn't have a problem running it as is, since it still can use the DLDI patching of the FAT driver.

Also, I just rewrote the SSEQPlayer SPS loading, so that it automatically removes dummy sequences from the list, and now, because the dummy sequences are completely removed, any remaining SSEQ are in fact still valid sseq data, and as a result, I specifically chose to no longer skip them.
 

avenir

Well-Known Member
Member
Joined
Dec 8, 2010
Messages
375
Trophies
0
XP
93
Country
United States
you can utilize ds_arm9_crt0.s.
So
Code:
if(memUncached(0x02000000)==0x02400000))return DSLite;
if(memUncached(0x02000000)==0x02800000))return DSDebug;
if(memUncached(0x02000000)==0x0c000000))return DSi;

BTW how do you detect null sequence?
 

avenir

Well-Known Member
Member
Joined
Dec 8, 2010
Messages
375
Trophies
0
XP
93
Country
United States
caitsith2 said:
The NULL sequence, as I detect and remove on SPS load, is done, by detecting entries that have a SSEQOffset of 0.
hehe, my sdatexpand won't emit sps entry if sseq/sbnk isn't linked properly!

my concern is how to remove null sequence... whose swar is less than 100bytes.
 

avenir

Well-Known Member
Member
Joined
Dec 8, 2010
Messages
375
Trophies
0
XP
93
Country
United States
awww...
my sdatexpand will extract sseq/sbnk/swar/strm.
sseq can be converted via sseq2mid.

well... vgmtoolbox will be suitable for such usage.
 

Naxito

Well-Known Member
Newcomer
Joined
May 14, 2008
Messages
63
Trophies
0
Location
Spain
XP
113
Country
avenir said:
awww...
my sdatexpand will extract sseq/sbnk/swar/strm.
sseq can be converted via sseq2mid.

well... vgmtoolbox will be suitable for such usage.
Yes but i tell export without computer, on nds.
 

Naxito

Well-Known Member
Newcomer
Joined
May 14, 2008
Messages
63
Trophies
0
Location
Spain
XP
113
Country
avenir said:
Why you need to export sseq on NDS? With what player are you going to play music?
Hahah, I think it would be good to implement, so for example, to listen with moonshell. But it is an opinion.
 

GameGeek

Well-Known Member
Member
Joined
Mar 14, 2009
Messages
167
Trophies
1
XP
183
Country
Argentina
Really nice app. I haven't tested it too much, but I haven't found any bugs, other than the following one:

2-bias said:
Oh and can you add special chars? Like the é in Pokémon or the german chars ä,Ä,ö,Ö,ü,Ü,ß.
I'm having this issue with the latest version. It would be nice to see this fixed, as many people have the é character in the filenames of their Pokémon ROMs.

Also, a suggestion: make it so that when you select a music theme, it shows its loading messages on the top screen; the bottom one would still show the theme list, so you wouldn't have to go back to it every time you want to load a different theme. Or, alternatively, make it automatically go back to the theme list the moment a theme finished loading.
 
  • Like
Reactions: 1 person

caitsith2

Well-Known Member
Member
Joined
Jan 16, 2004
Messages
350
Trophies
2
Age
43
Location
a secret location 93 million miles from the sun
Website
www.caitsith2.com
XP
2,476
Country
Canada
GameGeek said:
Really nice app. I haven't tested it too much, but I haven't found any bugs, other than the following one:

2-bias said:
Oh and can you add special chars? Like the é in Pokémon or the german chars ä,Ä,ö,Ö,ü,Ü,ß.
I'm having this issue with the latest version. It would be nice to see this fixed, as many people have the é character in the filenames of their Pokémon ROMs.

Also, a suggestion: make it so that when you select a music theme, it shows its loading messages on the top screen; the bottom one would still show the theme list, so you wouldn't have to go back to it every time you want to load a different theme. Or, alternatively, make it automatically go back to the theme list the moment a theme finished loading.

This error is absolutely impossible to fix. LibFat absolutely does not recognize anything past the standard 0x20-0x7E ascii characters at all, and rejects loading anything else. Your only recourse, is to remove the é in Pokémon, and replace it with e, as in Pokemon, and rerun SpsMaker on that instead. Any of the special german characters also have to be replaced with the standard ascii equivalent characters, (ä,Ä,ö,Ö,ü,Ü,ß. with a,A,o,O,u,U,B). (Tried hard-coding it myself, and that still failed.)
 

avenir

Well-Known Member
Member
Joined
Dec 8, 2010
Messages
375
Trophies
0
XP
93
Country
United States
a few things...

1.
GameGeek said:
Also, a suggestion: make it so that when you select a music theme, it shows its loading messages on the top screen; the bottom one would still show the theme list, so you wouldn't have to go back to it every time you want to load a different theme. Or, alternatively, make it automatically go back to the theme list the moment a theme finished loading.
http://sourceforge.net/projects/lactlib/fi...oMusicPlayer.7z
is my alternative version. now it can read the same sps format and can utilize both screens.

2. about spsmaker on Linux/OSX You must use UTF-8 locale
http://sourceforge.net/projects/lactlib/files/nds/xenobox.7z
- put xenobox in $PATH
- copy spsgen.sh to your TF's root
- cd /media/VOLUME_LABEL
- ./spsgen.sh

3. ported extlink reader to official edition
http://sourceforge.net/projects/lactlib/fi...ayer_extlink.7z
of course, if you don't boot without using extlink, this player work as usual.
also this cut down >31bytes from spsname in listing directory.
this patching is required for my spsgen, which generates sps based on filename, not header game name.

report: sseqplayer can read special character.
proof:
Code:
cp 2641_PokemonPlatinum.sps Pokémon.sps
this Pokémon.sps is accessible.

The problem is in SPS Maker.
currently SPS Maker stores nds filename in using ASCII.
specifically, form1.cs's line 107-108
CODE- bw.BaseStream.WriteByte(Convert.ToByte(TempString.Length - 2));

- bw.BaseStream.Write(Encoding.ASCII.GetBytes(TempString), 2, filePaths.Length - 2);
+ byte []name = Encoding.UTF8.GetBytes(TempString);
+ bw.BaseStream.WriteByte(Convert.ToByte(name.Length - 2));
+ bw.BaseStream.Write(name, 2, name.Length - 2);


unfortunately my xenobox sdatexpand's windows version cannot treat non-ascii char yet, but I'll fix that later.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Maximumbeans @ Maximumbeans: GM all