Skip to content

Commit 7d79f08

Browse files
committed
Initial import of Secret of Mana MSU-1
0 parents  commit 7d79f08

7 files changed

+710
-0
lines changed

README.txt

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
Secret of Mana (U) MSU-1
2+
Version 1.0
3+
by DarkShock
4+
5+
This hack adds CD quality audio to Secret of Mana (U) using the MSU-1 chip invented by byuu.
6+
The hack has been tested on SD2SNES, BSNES 075 and higan 094. The patched ROM needs to be named som_msu1.sfc.
7+
8+
===============
9+
= Using BSNES =
10+
===============
11+
1. Patch the ROM
12+
2. Generate the .pcm
13+
3. Launch the game
14+
15+
===============
16+
= Using higan =
17+
===============
18+
1. Patch the ROM
19+
2. Launch it using higan
20+
3. Go to %USERPROFILE%\Emulation\Super Famicom\topgear2s_msu1.sfc in Windows Explorer.
21+
4. Copy manifest.bml and the .pcm file there
22+
5. Run the game
23+
24+
====================
25+
= Using on SD2SNES =
26+
====================
27+
Drop the ROM file, topgear2_msu1.msu and the .pcm files in any folder. (I really suggest creating a folder)
28+
Launch the game and voil�, enjoy !
29+
30+
===========
31+
= Credits =
32+
===========
33+
* DarkShock - ASM hacking & coding, Music editing
34+
* David Thomas - Music compilation
35+
36+
=========
37+
= Music =
38+
=========
39+
40+
41+
=============
42+
= Compiling =
43+
=============
44+
Source is availabe on GitHub: https://github.com/mlarouche/SecretOfMana-MSU1
45+
46+
To compile the hack you need
47+
48+
* bass v14 (https://web.archive.org/web/20140710190910/http://byuu.org/files/bass_v14.tar.xz)
49+
* wav2msu (https://github.com/mlarouche/wav2msu)
50+
51+
To distribute the hack you need
52+
53+
* uCON64 (http://ucon64.sourceforge.net/)
54+
* 7-Zip (http://www.7-zip.org/)
55+
56+
make.bat assemble the patch
57+
create_pcm.bat create the .pcm from the WAV files
58+
distribute.bat distribute the patch
59+
make_all.bat does everything

create_pcm.bat

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@ECHO OFF
2+
3+
del *.pcm
4+
5+
wav2msu -o som_msu1-1.pcm som_01_angel_fear.wav

distribute.bat

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@ECHO OFF
2+
3+
del /q SecretOfMana_MSU1.zip
4+
del /q SecretOfMana_MSU1_Music.7z
5+
6+
mkdir SecretOfMana_MSU1
7+
ucon64 -q --snes --chk som_msu1.sfc
8+
ucon64 -q --mki=topgear2_original.sfc som_msu1.sfc
9+
copy som_msu1.ips SecretOfMana_MSU1
10+
copy README.txt SecretOfMana_MSU1
11+
copy som_msu1.msu SecretOfMana_MSU1
12+
copy som_msu1.xml SecretOfMana_MSU1
13+
copy manifest.bml SecretOfMana_MSU1
14+
"C:\Program Files\7-Zip\7z" a -r SecretOfMana_MSU1.zip SecretOfMana_MSU1
15+
16+
"C:\Program Files\7-Zip\7z" a SecretOfMana_MSU1_Music.7z *.pcm
17+
18+
del /q som_msu1.ips
19+
rmdir /s /q SecretOfMana_MSU1

make.bat

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@ECHO OFF
2+
del som_msu1.sfc
3+
4+
copy som_original.sfc som_msu1.sfc
5+
6+
set BASS_ARG=
7+
if "%~1" == "emu" set BASS_ARG=-d EMULATOR_VOLUME
8+
9+
bass %BASS_ARG% -o som_msu1.sfc secret_of_mana_msu1.asm

make_all.bat

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@ECHO OFF
2+
3+
make && create_pcm && distribute

secret_of_mana_msu1.asm

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
arch snes.cpu
2+
3+
// MSU memory map I/O
4+
constant MSU_STATUS($2000)
5+
constant MSU_ID($2002)
6+
constant MSU_AUDIO_TRACK_LO($2004)
7+
constant MSU_AUDIO_TRACK_HI($2005)
8+
constant MSU_AUDIO_VOLUME($2006)
9+
constant MSU_AUDIO_CONTROL($2007)
10+
11+
// SPC communication ports
12+
constant SPC_COMM_0($2140)
13+
constant SPC_COMM_1($2141)
14+
constant SPC_COMM_2($2142)
15+
constant SPC_COMM_3($2143)
16+
17+
// MSU_STATUS possible values
18+
constant MSU_STATUS_TRACK_MISSING($8)
19+
constant MSU_STATUS_AUDIO_PLAYING(%00010000)
20+
constant MSU_STATUS_AUDIO_REPEAT(%00100000)
21+
constant MSU_STATUS_AUDIO_BUSY($40)
22+
constant MSU_STATUS_DATA_BUSY(%10000000)
23+
24+
// Constants
25+
if {defined EMULATOR_VOLUME} {
26+
constant FULL_VOLUME($60)
27+
} else {
28+
constant FULL_VOLUME($FF)
29+
}
30+
31+
// **********
32+
// * Macros *
33+
// **********
34+
// seek converts SNES HiROM address to physical address
35+
macro seek(variable offset) {
36+
origin (offset & $3FFFFF)
37+
base offset
38+
}

0 commit comments

Comments
 (0)