Commit 7d79f08 0 parents commit 7d79f08 Copy full SHA for 7d79f08
File tree 7 files changed +710
-0
lines changed
7 files changed +710
-0
lines changed Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
1
+ @ ECHO OFF
2
+
3
+ del *.pcm
4
+
5
+ wav2msu -o som_msu1-1.pcm som_01_angel_fear.wav
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
1
+ @ ECHO OFF
2
+
3
+ make && create_pcm && distribute
Original file line number Diff line number Diff line change
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_REPE AT (% 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
+ }
You can’t perform that action at this time.
0 commit comments