Language…
7 users online: crm0622, Danik2343, Firstnamebutt,  Losoall, pnaha, tOaO, Zavok - Guests: 162 - Bots: 393
Users: 64,795 (2,381 active)
Latest user: mathew

AddmusicK

Tool

Originally posted by Lui37
Hmm does that still happen? I thought I fixed it.. ah well.


Oh, whoops. For some reason I thought that bug report was posted after your fix, not before it. My mistake.

Originally posted by Lui37
Also, I think you want to take care of this one too. According to MaxodeX, it seems to happen only when you use the GAIN commands (i.e. $FC and $FA $05). I don't know more than that.


Ah, yes, thanks. That's probably going to be the most time-consuming one to fix...

Originally posted by Lui37
How about throwing a warning hinting at the retrocompatibility options, with a prompt that lets the user decide whether they want the program to add #amk to the song if the lack thereof was intentional (read: lazy)? Throwing an error shouldn't be a major problem after all, but I just thought that could be an idea.


The only (minor) problem with that is that there are two types of people who use this program: hack designers and music designers. That option would be really useful for music designers, but hack designers, if they don't know much about custom music, might be left confused, especially if I'm actually asking them about something they probably don't have much knowledge of.

Originally posted by Lui37
Wait, I'm not quite sure what you mean here. Are you saying that using the q "command" for that could desync the envelope changes from the actual ticks..?


If you use the q "command" so that a note ends early, then the gain will also be triggered early, which might make it sound "off" from the rest of the music (since it's, well, early, i.e. just out of time with the music by however long q specified).

Originally posted by Lui37
I still think enabling that would be a good idea in theory. Much easier to apply if you don't want to add rests everywhere (thus eating less space). Anyone could still use rests for that too I guess.


Just to be sure (and this might be a stupid question), but what about $FC? Its purpose was basically an alternative to the $F5 $04 commmand that made it so that you didn't have to put rests everywhere. Again, maybe a stupid question, but I just want to make sure we're on the same page.
I should get a new layout.

Probably won't, though.
For $fa $05, why not add an extra byte that determines whether it affects only rests or everything (kind of like the FIR filter)? That way everybody's happy.

I'm not really sure on the limitations of the program so sorry if this is completely infeasible.
soundcloud / bandcamp / twitter / buy/stream my EP / buy my touhou music / buy my NEW album!!!
That would probably take more space for code.
I personally would like it to turn on GAIN when a channel is off as well.

Also, hi Kipernal :D
________________________________________________________
Mario the Gaul
Originally posted by MaxodeX
New bug I forgot to report a few days ago.

Channel #7 seems to bug with SFX if there's custom samples loaded into it. For instance, in my Flying Battery Zone, channel #7 plays a chinese cymbal, and the sample is loaded right before the intro, and if I jump in the time where it's not loaded, I get this; it sounds normal. But, after the sample sounds and it's loaded, every time I jump I hear this.

I've tested it with other ports and it also happens.


I don't suppose you could give me the text file (and samples) of a port that does this? I might be able to find the problem without it, but I'd gladly accept any help that'd make it easier.

Originally posted by X-cniS
For $fa $05, why not add an extra byte that determines whether it affects only rests or everything (kind of like the FIR filter)? That way everybody's happy.


That's an option too. Remind me--does gain use all 8 bits or only the lower 7? Because using a whole byte for an option like that seems a bit wasteful.


Also, if I don't get any strong opinions either way on the "no #amk gives an error instead of silently inserting it" bit, I'm going to assume that throwing an error is okay, just because I don't really want to sit on the issue forever. I'm considering quickly throwing together a sort of a "music dev" and "hack dev" mode for the program, though, that might resolve the issue. It'd work like this:

If you start the program in hack dev mode (the default mode), then the program will only output the most important of errors and send everything else to a log file (since a hack maker probably doesn't know or care what "unable to parse the volume command" even means). In addition, any missing #amk, #am4, or #amm directives will throw errors.

If you start the program in music dev mode (through a command line option or something, though see the next paragraph if you think that'd be annoying), then the program functions exactly as it does now, silently adding #amk and spitting out all the relevant errors.

Finally, I'm planning on making the program read in any command line options from a file called Addmusic_options.txt if no command line options are specified, since making batch files just to run a frequently-used program with whatever parameters you want is a hassle.

And all that after I mentioned the feature lockdown... Okay, I'm amending that to be a "SNES/SPC feature lockdown", because SNES and SPC debugging is by far the most time-consuming part of making this program, and we need to be absolutely sure that, in terms of the music files and such, we're setting down a solid framework that won't collapse under any future updates (i.e. avoiding what happened with previous addmusics).

EDIT: Also, I do apologize, but please don't expect the (hopefully) final update to be out, like, tomorrow or something. In addition to this I have the SMWCP2 cutscenes, STEAR, and a currently far too time-consuming real life to deal with, among other things, all of which are also vying for my immediate attention. I'm truly appreciative of everyone's patience so far (I don't know how you guys have put up with me), but I do have to ask everyone to wait just a bit longer. Thank you.
I should get a new layout.

Probably won't, though.

Extras



I should have something witty to put here (even if it's just to update dated info), shouldn't I?

Advertising Space

Originally posted by Kipernal
- Fix the p-switch and starman songs not restarting when necessary


I thought this was a feature. (The stage music still playing on the map if you exit the level with the status still active, notwithstanding.)

Originally posted by Kipernal
-I'm considering making the program throw an error if there's no #amk, #amm, or #am4 command in a song. On the one hand, this would make it so that porters would have to manually add the #amk tag the first time they test their song--AMK couldn't do it automatically like it does now (I don't know if the porters would find that a pain to do or not--it's the reason it just assumes any unlabeled song is an AMK song). But on the other hand, it would eliminate every bogus bug report we've been getting about unlabeled #am4 and #amm songs not working. Anyone have any thoughts?

I think this should be done. If you don't know how to add such a simple label to the bottom of a text document, then you probably shouldn't be rom hacking in the first place.

That is my personal perspective on that, anyways.

EDIT: Actually, I just found a bug just now while type-porting a song I am working on.

l8 o4 {f+^r} produces different results than l8 o4 {f+4r} for some reason. It treated the tie like {f+8} instead of {f+8^8}.
By the way, did we ever do something about that redundant second "Gain" command? (fa 01 xx)
Check out my music!
Originally posted by Kipernal
Just to be sure (and this might be a stupid question), but what about $FC? Its purpose was basically an alternative to the $F5 $04 commmand that made it so that
you didn't have to put rests everywhere. Again, maybe a stupid question, but I just want to make sure we're on the same page.

Yeah.. maybe that's the one that should have used fractions, instead of a constant value (or both, you can use the highest bit for that). Maybe not fun to code though.

Also, gain technically uses 8 bits, but I doubt anyone would use direct gain midnote, so you've got bit 7 "free". However, I think the best way to ignore q would be just using q7x.
Originally posted by Lui37
I doubt anyone would use direct gain midnote

Untrue. I've used it numerous times and it can be really useful in certain situations. I assume ggamer's used it a few times as well as that Japanese guy that did the Beach port. It's especially useful when trying to accurately port songs by Follin and those other guys that do stuff. You gotta consider the GAIN guys!
soundcloud / bandcamp / twitter / buy/stream my EP / buy my touhou music / buy my NEW album!!!
Fair enough, but I meant automatically, using those rest-to-gain commands. Things like plok beach were replicated by manually poking the envelope between ties I think (but I bet the original game had something to automate that).

Either way, I guess it isn't fair to give away that bit.. as I said, q7x could just do it, hopefully.
I just found that AMK isn't compatible with LevelASMtool (EDIT: Switched to uberASM, getting the same crash. EDIT2: switched to the normal LevelASM patch and I still get the same crash. Maybe the reason is the scrollbars code I'm using? Code for reference). Until I enter a level everything works fine, but when the level starts up, the screen freezes and the music continues to run.

EDIT3: Got it fixed! The problem was that the scrollbars code pointed to $7FB00x. Changing all those to $7FB50x fixed it. Thanks to Lui for that! However the layer 3 problem still applies.

I also still can't find any way to use custom layer 3 and this together, not even with imamelia's fix (unless I'm using it the wrong way somehow).

There is a fix for it that I use for the SMWCP2 base rom, though I think its a bit too customized to work on your rom. Not sure what imamelia's fixed does, but I know everytime I use AMK on the rom, I have to reapply the Layer3gfx patch afterwards to correct the issue.
Layout by LDA during C3.
Never mind, I think the fix actually works now, although I'm still getting some issues, but they aren't as major as a rom crash. I'll look into it later, once I've got the time to experiment further.
With AddmusicK, are you able to change songs mid-level?
I have a hack thread - Link (Now with a demo!)
Also a music thread - Link

C3 Projects
2013: Modern Spiny Pack
2012: MGSS v0.1
Spring 2010: SMB2 Autobomb Sprite
Should work well, just store the song number to $1DFB. Note that the game will stop for a few frames while uploading the song + sample data - nothing too big though.
That's definitely preferable to the music stopping entirely and the game freezing the moment you exit the level like it does with AM4.05 =D

Edit: Well, the freeze is noticeable, but I guess it's something I'll just have to live with for now if I want to be able to change music. Would it be possible in future versions to change the song without stopping the game entirely? Maybe just stop the music while the new song loads?

I also noticed that running AddmusicK seemed to mess with the settings for the original music. (intro played the "Here we go!" music and Yoshi's Island submap played the boss defeated fanfare). While this doesn't really affect me since I plan on using an entirely custom soundtrack, I thought it was worth mentioning.

Edit2: Having played around with it some more, I discovered the freeze could be entirely avoided by placing the song in the "Globals" section (not sure if just being under that tag is enough or if it has to overwrite one of the first 9 songs. Either is fine though since that's the sort of use I had in mind for those songs anyways).

I did, however come across a bigger problem in my testing. AddmusicK apparently breaks this little bit of levelASM code I had been using.

Code
EndLevelNormal:
	LDA #$FF	; freeze
	STA $9D		; all sprites on screen....
	LDA #$FF	; course clear
	STA $1493	; mode
	LDA #$03	; Originally 0B, but AddmusicK uses 03 for goal sphere/boss clear music.       
	STA $1DFB       ;
	DEC $13C6	; prevent mario from walking
	RTS


The music changes, but the level end sequence doesn't start. Any ideas for a workaround? (Worth noting: If I run it without the music change and when I ran it with AM4.05, the code worked fine)
I have a hack thread - Link (Now with a demo!)
Also a music thread - Link

C3 Projects
2013: Modern Spiny Pack
2012: MGSS v0.1
Spring 2010: SMB2 Autobomb Sprite
Might I suggest having a warning but inserting anyway for songs without the #amk ?
Your layout has been removed.
Also, would it be possible to create a command that interpreted q7x as having zero ticks between each note (seamless) rather than one?
Check out my music!
Originally posted by Moose
Also, would it be possible to create a command that interpreted q7x as having zero ticks between each note (seamless) rather than one?


Isn't that what $f4 $02 does?
Some side effect with the unpausing SFX:

- pause game while holding a shell
- only press start when unpausing
- shell sfx overwrites the value in 1DF9 which contains the unpause sfx
- song is never restored

Maybe you should move the pause/unpause code to $1DFA or something.

Tool