|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
![]() |
Author | Message |
---|---|
|
Sonic the Hedgehog - FM Music Hack
![]() Last edited by Wesker on Wed Aug 27, 2014 2:04 pm; edited 1 time in total |
Download link: http://vgm.mdscene.net/misc/Sonic1SMS_FM.sms Awesome FM music hack by ValleyBell which adds a lot to the game. I truly dreamed about this like the own ValleyBell said. If I'm not mistaken, inserting new FM music into an unsupported FM music game like this is a first in Master System game hacking. |
|
![]() ![]() |
|
|
![]() |
Absolutely stunning! I wondered too if this could be done, but I have zero knowledge on music matters. I hope ValleyBell releases the source code to this as I would really like to roll it into the disassembly as part of general enhancement of the game. | |
![]() ![]() ![]() |
|
|
![]() |
very very impressive !
I'll make a sms jap/mark III cart with this "hack" for sure. |
|
![]() ![]() |
|
|
![]() |
Naiss !
I just finished playing through it, I would have done some music differently. And ending disappointed me in a way, I hoped to hear the orginal tune rather than the unused one haha. |
|
![]() ![]() ![]() |
|
|
![]() |
This is excellent!
I'll play it through a real YM2413 and make a video out of it soon! |
|
![]() ![]() |
|
|
![]() |
Does the new music engine use more or less CPU? Less might mean less slowdown in the game.
I seem to remember the FM chip is somewhat harder to use on real hardware than in an emulator due to I/O clashes and timing requirements, so was it done to allow for that? |
|
![]() ![]() ![]() |
|
|
SONIC FM
![]() |
Thank you, awesome! Good work! I wish you could do the same on more new games. Many thanks! | |
![]() ![]() |
|
|
![]() |
Maybe I'm being suspicious, but since ValleyBell has an account on this forum, why did you post this in his place? Don't you think he might would have preferred to start his own official topic when he felt it was time? Maybe he is ok with this being posted by you but maybe he wanted to wait for whatever reason and I think you did this without his permission. I hope I'm wrong. | |
![]() ![]() ![]() |
|
|
![]() |
This is part of the Sonic Hacking Contest 2014 conducted by Sonic Retro, but this has been posted in several places because it's an awesome achievement and ValleyBell doesn't seem to have a problem with that (it's also a public entry for everyone to try). Maybe ValleyBell was planning to post it here after the contest or maybe not, so I felt like posting it here. Of course, I don't mean to "steal" his work (I never said this is mine, hence why I posted the source link), just to spread it in a community which is bound to Master System hacking and where maybe there's people who's not aware of this contest. |
|
![]() ![]() |
|
|
![]() |
There's more slowdown in this version, but only tiny bit more. The FM chip takes its sweet time to do things and will not make correct sound if you don't wait long enough between accesses (70+ cycles D:).
I have not tried on hardware to see if it works right there. |
|
![]() ![]() ![]() |
|
|
![]() |
I never said you wanted to steal it, and I'm aware it's part of the hacking contest (I'm nineko over there), I'm just saying it would have been nice to wait for ValleyBell to post it by his own when he felt it would have been appropriate (maybe with a more complete description given the scope of this forum), but that's just my opinion. I know I wouldn't like if something I did was crossposted in this way, because I like to release things in a certain way. I'll stop here anyway, I don't want to derail this amazing achievement. | |
![]() ![]() ![]() |
|
|
![]() |
If he has any problem with this topic and comes to express any possible disagreement to it, I'll apologize and request the topic to be deleted if necessary. I never wanted to hurt ValleyBell's wishes or intentions with this, only to spread the awesome hack he did. |
|
![]() ![]() |
|
|
![]() |
It is fine - it is always fine until somebody comes up and say it isn't (which is unlikely). The meaning and purpose of "His own official topic" sounds very 1998, Tom is over reacting a little. ValleyBell & team work are awesome, thanks for posting that! | |
![]() ![]() ![]() |
|
|
![]() |
Are there any more FM hacks like this? I'd like to test all of them on real hardware - I'm making a video of my FM Power Base Converter with all known (to me) FM games and it would be nice to test FM hacks at the same time. | |
![]() ![]() |
|
|
![]() |
Many games have a dual PSG and FM engine, but have to be hacked to enable it. That's the closest thing I know of. | |
![]() ![]() ![]() |
|
|
![]() |
That hack sounds amazing! | |
![]() ![]() ![]() |
|
|
![]() |
WOW, when you end the game with 6 emeralds change the music in the credits
in the end, in the credits, plays the music Marble Zone FM =) Par codes end game: 00D23E:12 emeralds: 0D27F:06 after start disable code |
|
![]() ![]() |
|
|
![]() |
I've run this on real hardware - on my FM Power Base Converter prototype on a Genesis Model 1:
http://youtu.be/HXkxkov8Db8?t=11m24s I haven't yet compared to non-FM gameplay, but it does seem to me like there is a bit more slowdown with the; though the FM soundtrack is well worth it! |
|
![]() ![]() |
|
|
![]() |
Hahahahaha ! That's cool ! I always finish with all emeralds :P I guess I'll do another playthrough and miss one of the emeralds so I can hear the normal ending tune too. (Not gonna use the PAR codes :P) |
|
![]() ![]() ![]() |
|
|
![]() Last edited by ValleyBell on Fri Feb 03, 2023 9:54 pm; edited 1 time in total |
I'm not someone who actively advertises his own things, so thanks for creating the topic.
Also, I'm late, but I made a release topic on SSRG. (The actual release was here.) Thanks for the feedback. I already planned to release the source code (incl. all songs and tools I used) when I submitted the hack to the SHC. As said in the post on SSRG, I'll wait until all songs are found. The new music engine uses a bit more CPU. I used a size-optimized format for notes that I need to decode. Also it has to process 7 FM music channels + 1 PSG SFX channel instead of 4 PSG channels (music/SFX mixed). Judging by db-electronics video, I need to wait a bit more between the FM writes though. My YMWait_Data macro waits only for 48 cycles itself and I wait about 60 cycles on average. I think most SMS games that can do FM and PSG can't do both of them simultaneously. (except for the JP SMS BIOS) None of the FM games I know use PSG SFX with FM music.
Yeah, that's one of the easter eggs. EDIT 2023-02-03: fixed the links |
|
![]() ![]() ![]() |
|
|
![]() |
I'm waiting for registration to be accepted at SSRG, but I wanted to say that I found a bug. The FM registers are not zeroed after reset, so if you do a soft-reset the current tone hangs. | |
![]() ![]() ![]() |
|
|
![]() |
Kroc, I just wrote a good word about you in the staff subforum on SSRG, hopefully this will speed up your approval process.
Also, glad to see that ValleyBell didn't mind to have this topic posted, and I apologise again. I prefer to post about my own things so I can have control of the first post, that's all, I never assumed bad faith :) Also², I played this a bit the other day, and I have to confirm it's amazing. Maybe I will record a full playthrough if I'm bored enough. |
|
![]() ![]() ![]() |
|
|
![]() |
I've found that many games exhibit this behaviour as I test the FM Power Base Converter... |
|
![]() ![]() |
|
|
![]() |
Here's a quick recording of just Sonic FM I made to help you out with debugging...
http://youtu.be/Zqj2UpERHcs |
|
![]() ![]() |
|
|
![]() |
I moved this topic to the Music forum as it's not too development-related. | |
![]() ![]() ![]() |
|
|
![]() |
Is reverse engineering the easter eggs cheating? :)
$0d is an altered boss track played on the final level. $0f is already covered, under the covers the "good ending SFX" triggers a change in the credits music. $11 plays if you die on GHZ Act 2. Sounds much like the normal music without the small intro? $16 plays on the game over screen when you have no continues. Or am I missing something and those aren't the intended eggs? |
|
![]() ![]() ![]() |
|
|
![]() |
I found a minor problem, since the timing is different now, the recorded demos won't work properly anymore. For example, the GHZ1 demo will cause Sonic to die after 70 seconds or so.
Perhaps this is a good excuse to perfect this idea and be able to record new demos :) Of course FM and non-FM demos will never be interexchangeable, though it would be neat to setup a workflow for that, especially with Kroc's upcoming disassembly and editor(s). |
|
![]() ![]() ![]() |
|
|
![]() |
I love this.
And i hate this. I love this, it sounds awesome, and it is pretty cool from a technical standpoint. I love what you did with the ost and how everything sounds. I hate this, because i don't have any fm-capable hardware with me atm. :) I really really want to play this in the real hardware. |
|
![]() ![]() ![]() |
|
|
![]() |
It ought to be possible to tweak the demo replayer to play back one input per actual frame, so the slowdown would not affect what happens. More likely we'd want to replace the demos entirely with some that are a bit less boring. | |
![]() ![]() ![]() |
|
|
![]() |
Yeah, I know that there is some additional lag the causes everything go out of sync.
I found it pretty neat that the GHZ1 demo actually looks better with this amount of lag. Because Sonic does lots of things that make sense, like destroying the Invincibility monitor and rolling down the slope. That also brings up the question how long the demo was intended to be. btw: The frame rate is so unstable that my BizHawk recording of Sky Base 2 doesn't even work with the current ROM anymore. Yes, it is. :P You missed track $15, but these are all intended eggs. There is also track $17, but it is not used anywhere. About the reset bug: It usually calls the StopAllSound routine (wrapper routine is called muteSound in Kroc's disasm) at the beginning of the ROM. But it might fail to detect the FM chip properly after the soft reset. And if that happens, it won't reset the FM chip. This is definitely something I want to fix though. Does the BIOS run after a soft reset on a real console? The FM detection is a slightly modified version of this code and relies on the BIOS writing a certain value to $C000. db-electronics: Thanks for the video. I'm pretty sure I don't wait enough between the FM frequency writes, so I'll add a few delays. (or restructure the code a bit) |
|
![]() ![]() ![]() |
|
|
![]() |
Soft reset is up to the game; Sonic has this in its vblank:
in a,($dd) ; 0000DB DB DD
and $10 ; 0000DD E6 10 jp z,$0000 ; 0000DF CA 00 00 ...which is as basic as it gets. You'll need to patch it to at least put the value back in $c000 from where you stashed it. I hadn't realised $15 was on the list of surprises, I guess the square brackets in your SSRG thread indicate those. |
|
![]() ![]() ![]() |
|
|
![]() |
So, sixteen hours and two dozens of failed attemps later (man, do I hate Youtube's broken uploader), I finally managed to upload my full playthrough of this :)
http://www.youtube.com/watch?v=6WRwpcV9_30 Have fun :) |
|
![]() ![]() ![]() |
|
|
![]() |
[Admin: split discussion of missing PSG on a real system to dev forum: http://www.smspower.org/forums/viewtopic.php?t=14998 ] | |
![]() ![]() ![]() |
|
|
![]() |
I can't get past the teleporter after beating last boss. Robotnik goes, Sonic stays. I played three times, one without getting all the chaos emeralds. No matter how many times I try, even dying by the counter and killing the boss again. I'm using a Neo Myth MD to play the hack (with the FM chip!) in a Sega Genesis HD Model. | |
![]() ![]() |
|
|
![]() |
I finished the game on the japanese sega master system collecting all the emeralds and I didn't encounter this bug | |
![]() ![]() |
|
|
![]() |
Thanks for the output. I will try it in other instances, my Japanese MD for example. Also, I will try running it in my Mega Everdrive, even it not supporting the FM sound as an experience.
EDIT: Tried the original game on my Myth MD and I got the same bug. Tried also running the hack from the Mega Everdrive and this time it succeeded. I can only conclude it is a Neo Myth bug. I'm going to post it at Neo Flash forums. |
|
![]() ![]() |
|
|
Wow!
![]() |
I watched the Youtube videos of this in action, and I must say that I am completely blown away. The new FM soundtrack is outstanding! When I get an SMS flash cart, this will definitely be going on there!
This is a work of genius, ValleyBell. I'd love to see more of these FM soundtrack hacks from you, if you're willing. Also, I think there should be a patch made out of this, so it can be put in the Hacks page on the site, and therefore be easy to stumble across. Romhacking.net would be a good place for it also. I apologize if I'm sounding bossy. I'm just so excited about this that I want the very best for it. I've never seen a hack quite like this, so it's very new and exciting for me. |
|
![]() ![]() |
|
|
![]() |
http://vgm.mdscene.net/misc/Sonic1SMS_FM_v101.sms
I added 20-30 cycles of delay between the FM frequency writes (70-80 cycles in total), so that hopefully fixes the missing notes. (I'll fix the soft reset bug later.) btw: Making an IPS patch of this ROM should be no problem. I only reassembled the 16 KB bank that contains sound and music. The rest of the game is identical, except for the easter eggs that I added by hex-hacking. Also: Thanks for the nice feedback :) |
|
![]() ![]() ![]() |
|
|
![]() |
Cool. Now it works perfect in console without any missing notes indeed.
Sadly I'm not able to check the soft reset bug or test its future fix since the Japanese Master System lacks a reset button. |
|
![]() ![]() |
|
|
![]() |
Just wanted to say thanks for this. It gave me an excuse to play through Sonic 1 again (grabbing all the emeralds of course!), big nostalgia trip.
Much appreciated, Valleybell! |
|
![]() ![]() |
|
|
Strange bug...
![]() |
I have found a strange bug, but I'm not sure if it's the game or the emulator.
So I loaded up Version 1.01 of this fine hack in my emulator of choice, Kega Fusion, and after the BIOS screen, I got a BIOS error message, which I've taken a screenshot of and attached to this post. The error does not occur if I select "Disable BIOS use" in configuration, and it also does not occur in a recently downloaded beta of MEKA. Because of the fact that in one emulator it works, and in the other I have to disable the BIOS, I have no idea if it's an emulation or software error. I also do not have a flash cart yet, so I have no idea if this error would occur on an actual system. Just FYI. |
|
![]() ![]() |
|
|
![]() |
It's quite common for people to forget to update the checksum when producing hacks. | |
![]() ![]() ![]() |
|
|
![]() |
Here it is a checksum fixed version.
|
|
![]() ![]() |
|
|
![]() |
Thank you, Shion! The fixed version you supplied worked like a charm. | |
![]() ![]() |
|
|
![]() |
Are you going try Sonic 2 on FM? | |
![]() ![]() |
|
|
![]() |
Thanks ValleyBell,
An early Christmas present. It's the first game I played on my everdrive! It sounds incredible. Trully amazing! I'd pay for a fundraiser to get more games fm-ized. |
|
![]() ![]() ![]() |
|
|
![]() |
I finally did the last few fixes to the ROM. So here it is: Sonic 1 FM v1.02, now with fixed soft reset
This time you can not only download the ROM, but also an IPS patch. btw: The JP BIOS has no checksum check, that's the reason I missed it in v1.01. Probably not, but who knows ... I started the work on the actual Sonic 1 FM hack only a few weeks before the hacking contest. The "arrangements" were done in 2011 though (minus Marble Zone and the hidden songs), so I just had to modify the sound engine and backport the FM versions of the songs. I won't prevent you from donating, if you really insist on it. But this won't raise (or lower) the chance of other FM hacks, since this is a pure hobby project. |
|
![]() ![]() ![]() |
|
|
![]() |
You know, I usually don't advertise myself, but you might be interested in some Sonic 1 FM source. | |
![]() ![]() ![]() |
|
|
![]() |
I've belatedly added it to the site:
http://www.smspower.org/Hacks/SonicTheHedgehog-SMS-FM-Mod ...so now it shows up on the main Sonic page too. The readme in the source is nice too! |
|
![]() ![]() ![]() |
|
|
![]() |
Does it run on real hardware? --
|
|
![]() ![]() ![]() |
![]() |