I've made an mp3 decoder in 80x86 asm code. That's just a first step towards making a similar decoder in MIPS asm for PSX consoles, and perhaps also ARM asm for GBA consoles. But before porting the code to other consoles, I would be glad about some beta testing & feedback.
The source code and win32 executables can be found here:
http://problemkaputt.de/mp3.htm
If there aren't any serious bugs and flaws in there, then it's almost ready to be ported to other consoles. Except, I should probably first do something about some global variables that are currently preventing to decode multiple mp3 files simultaneously... and after spending 10 weeks on the project, maybe I need a break soon.
mp3 decoding
I think, people on https://www.vogons.org/ would like to test this thing on an old hardware, but I'm not even registered there and I don't have such hardware.
I tested it with a few tracks on my PC and sometimes they just stop abruptly at random points while the program keeps running and never exits on its own. Converting them to WAV or running it with /test parameter works without issues.
Talking about MP3 playback on old hardware, in the past for DOS I used QuickView Pro, it supported many audio and video formats, even MP4, but I don't know whether it required FPU or not, the readme only says that minimum supported CPU is 386 without specifying any details.
I tested it with a few tracks on my PC and sometimes they just stop abruptly at random points while the program keeps running and never exits on its own. Converting them to WAV or running it with /test parameter works without issues.
Talking about MP3 playback on old hardware, in the past for DOS I used QuickView Pro, it supported many audio and video formats, even MP4, but I don't know whether it required FPU or not, the readme only says that minimum supported CPU is 386 without specifying any details.
Vogons sounds good for such questions, thanks! I've registered an account and will post there later today.
Yes, some people nesdev also mentioned that v1.1 can hang during playback, apparently on newer multicore processors. I've just uploaded v1.2, with three new EXE's which should fix the problem (if mp3play doesn't work, try mp3wom or mp3lock).
80386 with FPU is probably too slow for mp3, but 80386 with integer maths might work, at 8kHz or so (and there is somebody in the vogons forum mentioning a video in which somebody seems to play 22kHz mp3 on a CRT monitor, which is thought to connect to a 486 with 50MHz).
Yes, some people nesdev also mentioned that v1.1 can hang during playback, apparently on newer multicore processors. I've just uploaded v1.2, with three new EXE's which should fix the problem (if mp3play doesn't work, try mp3wom or mp3lock).
80386 with FPU is probably too slow for mp3, but 80386 with integer maths might work, at 8kHz or so (and there is somebody in the vogons forum mentioning a video in which somebody seems to play 22kHz mp3 on a CRT monitor, which is thought to connect to a 486 with 50MHz).
Last edited by nocash on September 22nd, 2024, 3:38 am, edited 1 time in total.
-
Administrator Verified
- Admin / PSXDEV
- Posts: 2717
- Joined: December 31st, 2012, 5:37 pm
- I am a: Shadow
- PlayStation Model: H2000/5502
Code: Select all
mp3 player for Playstation
http://www.geocities.co.jp/Playtown/2004/
[email protected]
It is first implementation for test.
‚±‚ê‚̓eƒXƒg‚Ì‚½‚ß‚Ìʼn‚ÌŽÀ‘•‚Å‚·B
It is toooooo sloooooooooooow. not optimized for speed yet.
use verbose mode,otherwise you will think psx hang up.
‚Þ‚¿‚á‚‚¿‚á’x‚¢‚Å‚·B‚‘¬‰»‚µ‚Ă܂¹‚ñB
verboseƒ‚[ƒh‚É‚µ‚È‚¢‚ÆPS‚ªƒnƒ“ƒO‚µ‚½‚ÆŽv‚¤‚Å‚µ‚傤B
It read mp3 file from pc-hdd, decode mp3, encode psx adpcm, store sound memory, and last, play sound with loop.
PC‚̃n[ƒhƒfƒBƒXƒN‚©‚çmp3ƒtƒ@ƒCƒ‹‚ð“Ç‚ÝAmp3‚ðƒfƒR[ƒh‚µApsx adpcm‚ɃGƒ“ƒR[ƒh‚µAƒTƒEƒ“ƒhƒƒ‚ƒŠ‚ɃXƒgƒA‚µAÅŒã‚Ƀ‹[ƒvĶ‚µ‚Ü‚·B
long mp3 file is only played first part.
’·‚¢mp3ƒtƒ@ƒCƒ‹‚Íʼn‚Ì•”•ª‚¾‚¯Ä¶‚µ‚Ü‚·B
because using caetla commandline/pcdrv extension. It can't work yaroze.
caelta‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“/pcdrvŠg’£‹@”\‚ðŽg‚Á‚Ä‚¢‚é‚Ì‚ÅA‚â‚낤‚º‚ł͓®ì‚µ‚Ü‚¹‚ñB
usage:
psexe mp3play.exe -c [-v] [-h] mp3-filename
-v verbose mode
-h program help information
to stop play,press enter on PC.
‰‰‘t‚ð‚Æ‚ß‚é‚É‚ÍAPC‚Ìenter‚ð‰Ÿ‚µ‚Ü‚·B
example:
psexe -Y mp3play.exe -c -v pcdrv:sample.mp3
compile:
for compile, need math.h and libm.a.
I get it from newlib at ftp://ftp.cygnus.com/pub/newlib/
ƒRƒ“ƒpƒCƒ‹‚É‚Ímath.h‚Ælibm.a‚ª•K—v‚Å‚·B
Ž„‚Í ftp://ftp.cygnus.com/pub/newlib/ ‚Ìnewlib‚ðŽg‚¢‚Ü‚µ‚½B
Thanks:
mp3 decode : mpeg3play by ISO MPEG Audio Subgroup Software Simulation Group / Johan Hagman
spu hack : si.c by Dodger of CREATURE http://www.in-brb.de/~creature/index.htm
adpcm encode: vagpack.c by bITmASTER http://members.xoom.com/_bITmASTER_/
You do not have the required permissions to view the files attached to this post.
Development Console: SCPH-5502 with 8MB RAM, MM3 Modchip, PAL 60 Colour Modification (for NTSC), PSIO Switch Board, DB-9 breakout headers for both RGB and Serial output and an Xplorer with CAETLA 0.34.
PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.
PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.
I've updated and more or less finished the GBA version of my mp3 player!
The new GUI is fully functional, with filelist, playqueue, options, etc.
Alltogether, it's about as good as it could possibly get on a GBA console with 32Mbyte cartridge storage space.
I need some help on supporting international filenames. The future PSX version is planned to support the Joliet CDROM filesystem with 16bit Unicode filenames. And for the GBA version, I am using a ZIP file instead of a filesystem. That's currently supporting classic ZIPs with DOS/codepage characters, and I would also want to support newer ZIPs with UTF8 characters...
Classic ZIPs with DOS Codepage characters
There is some official ZIP document claiming that ZIP was traditionally using CP473. But in reality, it seems to use CP870.
At least that seems to be the case on my PC: Windows 98, english version (but with german keyboard and german timezone). When using an older 7zip version, or the yet older official pkzip 2.5 software... those programs do encode/decode the filename
My question: Does that actually work on all PCs and in all countries? For example, if you are living in greece or japan: Do you see the intact filename when opening the attached ZIP file?
Other question: Did zip files ever support stuff like greek or japanese filenames (before they added UTF8 support)?
Newer ZIPs with UTF8 characters
My OS and tools are just too old for that. But if somebody wants to do me a big favor: Could you create a ZIP file with the same
For example, when opening the ZIP in a hex editor: The characters
Beyond western europe...
At the moment I have only support for west/european characters (Windows ANSI and DOS CP870). I don't know if there's much demand for mp3 filenames with east/european accent marks, or completely different alphabets like greek, arabic, japanese...?
If yes, I would be glad to get some sample zip file that contains such characters (and best also a gif that shows how they should look like).
The new GUI is fully functional, with filelist, playqueue, options, etc.
Alltogether, it's about as good as it could possibly get on a GBA console with 32Mbyte cartridge storage space.
I need some help on supporting international filenames. The future PSX version is planned to support the Joliet CDROM filesystem with 16bit Unicode filenames. And for the GBA version, I am using a ZIP file instead of a filesystem. That's currently supporting classic ZIPs with DOS/codepage characters, and I would also want to support newer ZIPs with UTF8 characters...
Classic ZIPs with DOS Codepage characters
There is some official ZIP document claiming that ZIP was traditionally using CP473. But in reality, it seems to use CP870.
At least that seems to be the case on my PC: Windows 98, english version (but with german keyboard and german timezone). When using an older 7zip version, or the yet older official pkzip 2.5 software... those programs do encode/decode the filename
testname Á Â À - É Ê È - Í Î Ì - Ó Ô Ò.txt
as CP870 characters (CP473 doesn't even support uppercase chars with those accent marks). I've attached a ZIP with that filename example.My question: Does that actually work on all PCs and in all countries? For example, if you are living in greece or japan: Do you see the intact filename when opening the attached ZIP file?
Other question: Did zip files ever support stuff like greek or japanese filenames (before they added UTF8 support)?
Newer ZIPs with UTF8 characters
My OS and tools are just too old for that. But if somebody wants to do me a big favor: Could you create a ZIP file with the same
testname Á Â À - É Ê È - Í Î Ì - Ó Ô Ò.txt
filename insides, but encoded in UTF8 format, and post it here as attachment?For example, when opening the ZIP in a hex editor: The characters
Á Â À
would be seen as B5 20 B6 20 B7
for CP870, and for UTF8 that part should look differently.Beyond western europe...
At the moment I have only support for west/european characters (Windows ANSI and DOS CP870). I don't know if there's much demand for mp3 filenames with east/european accent marks, or completely different alphabets like greek, arabic, japanese...?
If yes, I would be glad to get some sample zip file that contains such characters (and best also a gif that shows how they should look like).
You do not have the required permissions to view the files attached to this post.
Who is online
Users browsing this forum: No registered users and 12 guests