Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango...

40
Sappy 2006: OMFG HELP!

Transcript of Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango...

Page 1: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:OMFGHELP!

Page 2: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

OMFGHELP!WhenItrytoplayacertainsong,Igetagenericerrormessage.What'supwiththat?

TheEOTcommandisnotfullysupported.Asinglenoteworksfine,butfullchordsfail.Theactualerrorthat'ssupposedtoappearis"SubscriptoutofRange",whichdoesn'thelpmucheither.

I'mafraidthere'slittletobedoneherebuttoavoidplayingthesesongs.

Developers,ifyouhaveasongwithpassageslikethis:

.byteEOT,As2

.byteCs3

.byteFn3

...thatwouldn'twork.TIEsstartfine,butEOTsspanningmorethanonenotebreakthings.

Lacking.Sfiles,Pokémon's"CavesandDarkness"songisabitdifficulttofixbutyoucouldlook,inthesongdata,for0xCEand0xCFwhichareEOTandTIErespectively.

MySappy-enabledhomebrewdoesn'tworkinSappy.Theheaderpointersareallwrong!

SinceClassicVBonlysupportssignedLongs/DWords,certainpointerrangestranslatetoanegativedecimalnumber.IhadthisproblemmyselfwhileworkingontheDemoJukebox.IfixedthisbymovingallSOUND_FILEStothestartoftheromuntilthepointerwasinacorrectlyinterpretedrange:

$(TARGET_ELF):$(SOUND_FILES)$(.OFILES)Makefile$(DEPENDFILE)

@echo>$(MAPFILE)

$(CC)-g-o$@$(SOUND_FILES)$(.OFILES)-Wl,$(LDFLAGS)

Thisiscausedbysmallprogramsandthemusicdatabeingputattheendoftherombydefault.

WhenusingtheMIDIdriver,theinstrumentsareallwrong!That'sbecausethegamesdon'tneedtoadheretotheGeneralMIDIstandard.Anygiveninstrumentor"patch"asit'softencalledcanhaveanysound.It'suptothesoundandmusicartistsofthegamein

Page 3: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

questionhowmuchthegamepatchesmatchuptotheGeneralMIDIstandard.Youcanremapthepatcheswiththe<midimap>XMLtag.PleaserefertotheSappy.XMLdocumentationfordetails.

Ihavethosemediakeysonmykeyboard,butsomedon'tworkinSappylike"Eject"!

Asofversion1.1,SappyonlylistenstoPlay/Pause(whichdoesn'tpause),Stop,Next,Previous,VolumeUpandVolumeDown.It'signoringofEjectisquitenatural.Eachkeymustbecodedinseperately.

I'mrunningonaJapanesesystem,andthetextisallgarbled!It'snoteasytogetJapanesetextrenderedproperly.We'restillfiguringthisout.Inthemeantime,youcangetanon-localizedversionwhereyougotthis.

BuiltonWednesday,April12th,2006

Page 4: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:What'sNew

Page 5: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

What'sNewFrom1.1to1.2

Super-fastsampleloading-askfordetailsifyoudare!

Anti-earbleedingsystemtodisableunneededbutear-piercingsoundslikesomeinFinalFantasy4.

MIDIsupportlikeintheoldSappy.

MIDImappingeditor.

MIDIexport,thankstoDragforfixingit.

AbilitytochoosewhichMIDIOUTdevicetouse.

Variousbugfixes.

From1.0to1.1

Idiot-proofexporters.You'llbenotifiedwhenyoumisread"filepattern"for"filename"or"pathname".

Non-braindeadassembler.Itnolongerfailsonpointers.

Volumecontrolslider.Respondstokeyboard(ifithasfocus)andmousewheel.

WM_APPCOMMANDsupport.Ifyouhavededicatedmediacontrolbuttonsonyourkeyboard,Sappywilllistentothem.

Soundloadingonbytearraysinsteadofcharacterstrings,asurgedbyBouché.

Feedbackwhileloadingasongtoplay.

RudimentarySappyClassic-styleMIDIsupportwithequallyrudimentaryGameBoyClassicmodeandinstrumentremap.

Wishlist

SupportformoreMIDIcontrols.

Tempofixforexports.

GameBoyClassicmodeforthenewdriver.

Page 6: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Fullsoundloadingfix.Asof1.1,onlyPCMwavesareproperlyloaded.Tonegeneratorsarestillloadedinstrings.

BuiltonFriday,December22nd,2006

Page 7: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:XMLdefinition

Page 8: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

XMLdefinitionRootelementSAPPY→oneormoreROMelements.ElementROM→oneormorePLAYLISTelements,oneoptionalBLEEDINGEARSelement,oneoptionalMIDIMAPelement.

AttributeCODE,required.AttributeNAME,required.AttributeSONGTABLE,pointer,required.AttributeSCREENSHOT,file.AttributeCREATOR.AttributeTAGGER.ElementPLAYLIST→oneormoreSONGelements.AttributeNAME,required.AttributeSTEAL,anotherCODE.ElementSONG→thesong'sname.AttributeTRACK,required.

ElementBLEEDINGEARS→oneormoreINSTelements.

ElementINST.AttributeID,MIDIpatchnumber,or...AttributesFROMandTO,rangeofMIDIpatchnumbers.

ElementMIDIMAP→oneormoreINSTelements,oneormoreDRUMelements.

ElementINST.AttributeFROM,MIDIpatchnumber,required.AttributeTO,MIDIpatchnumber,required.AttributeTRANSPOSE.AttributeSECOND.Notusedinthisversion.AttributeTHIRD.Notusedinthisversion.

ElementDRUM.AttributeFROM,note,required.AttributeTO,note,required.AttributeKIT.Notusedinthisversion.

Page 9: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

BuiltonWednesday,July26th,2006

Page 10: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:HackerStuff

Page 11: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

MID2AGBandtheBuilt-InAssemblerIfyouhavetheMID2AGBconverter,youcanuseittoconvertmostMIDIfilestotheSappyengine'snativeformat.Butthisisonlyhalftheprocedure.Theresulting.Sfilesmustbeconvertedtobinarycode.Thiscanbedonewithmoststandards-compliantassemblers,suchastheoneusedinGCC.

Unfortunately,whenusinganassemblerthepointersarealloffandtheVoiceGroupisundefined.Weusedtohand-editthe.SfilesinNotePadorwhateverandaddtheintendedlocationinROMtoallreferencedpointers.

Sappy2006packsabuilt-inassembler-liketoolthat'scustom-builtforthespecificpurposeofconvertingSappy.Sfiles.Itdoesn'tgenerateasinglebyteofcode,onlysongdata.Butitdoesautomaticallyfixthepointers,andevenrecognizestheheaderbyteswhenitseesthemsothenewsongheadercanautomaticallybelinkedintotheSongTable!

Usage

First,youmustcopyorrenamethefilemusicplaydef.stomplaydef.s.Forsomereason,Nintendogaveitanothernamethanisreferencedinthesongfiles,andcopiesto\srcwiththepropername.Makesurethatmplaydef.sisinthesamefolderasyoursongfiles.

Afterconvertingyoursong,pickingavoicegroupoffsetfromanothersonganddeterminingwhereintheROMyouwanttoputthenewone,opentheassemblerandfillinallthreefields.Therestshouldbeprettymuchautomatic.

TheassemblerworksonlybecauseSappysongfileshavecertaincharacteristics:

Noforwardjumps,onlybackwards.

Page 12: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Wordsareusedexclusivelyinjumpsandtheheader.

Theonly.globalisalsothesongnameandthereforeheaderlabel.

BuiltonTuesday,November8th,2005

Page 13: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:HackerStuff

Page 14: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

SongTransplantsAnygamethatusestheM4Aenginetoplaybackitsmusicandsoundscanbeusedinasongtransplantation.Thisusedtobeaverybigtask,findingasong'sheaderandhand-dumpingeachtrack.Then,you'dhavetogothrougheachtrackandediteverysinglepointer.Oneslip-upandthesongwouldn'twork.

Nowallyouhavetodobetweenexportingandimportingthetracksistoeditthetracks'VOICEcommands(mosttrackshavingonlyoneofthose),andpickinganicevoicegroupthatmoreorlesssuitsyourneeds.

Thefollowingthingsmustbedoneforapropersongtransplant:

Exporttracks

Editvoicecommands

Importtracks

BuiltonFriday,November4th,2005

Page 15: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:HackerStuff

Page 16: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

ExportTracksTheExportTracksdialoghasalistoftrackpointersandapattern-sensitivefilenametextbox.

Ifyouenter,forexample."RCRIntrotrack$T.bin",you'llgettrackfilescalled"RCRIntrotrack0.bin","RCRIntrotrack1.bin"etcetera.Anypointersfoundthereinwillbeautomaticallyrecalculated.Entering"$P"addsthetracks'pointerstotheirfilenames.

BuiltonMonday,November28th,2005

Page 17: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:HackerStuff

Page 18: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

EditvoicecommandsBecauseinstrumentshardlyevermatchupbetweengames,transplantedsongsmustbeeditedtousethetargetgame'sinstruments.Therearetwostepstodothis:

Figureoutwhichinstrumentstouse.

Edittrackdata.

Todostep1,openthetargetgameandfindasongthathastherequiredinstruments,orsomethingclose.ThenpressExtractSamplesandmakesureyouusethe$Ifilenamepattern.Identifytheinstrumentsyouwantandwritethemdownsomewhere.Thisisonlyoneofseveralmethods.

Todostep2,openeachtrackfileinahexeditorandfindtheBDbytes.Theycanoftenbefoundnearthebeginningofeachfile.Thebytethatfollowsitisthetrack'sinstrument.Replacethesevalueswiththeonesyouwrotedowninstep1.

BuiltonFriday,November4th,2005

Page 19: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:HackerStuff

Page 20: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

ImportTracksTheImportTracksdialogisalittlemorecomplexthantheExportdialog.Selectthetrackfilesyouwanttoimportinthelistbox,andenterthreepointervalues.Defaultsareprovided,thesearethecurrentlyselectedsong'spointers.

Tracksarehandledintheordertheyappearinthelistbox.Toimportalater-appearingfilebeforeanearlier-appearingfile,renametheminExplorertochangetheirsortingorder.In-trackpointersarerecalculatedwhenneeded.

Whenimportingisdone,SappywillaskforconfirmationtoautomaticallychangetheMasterSongTabletoreflectyourchanges.

BuiltonFriday,November28th,2005

Page 21: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:HackerStuff

Page 22: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Dataformats

Page 23: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Samples

Type Name Descriptionu16 type Notusedu16 stat 0x0000foroneshot,0x4000forforwardloopu32 freq "Normal"frequency<<10u32 loop Loopstartpositioninsamplesu32 size Totalnumberofsamples

s8 data[] Size+1samplesintotal.Lastbyteiszeroforone-shots,sameaslooppointerforloopedsamples.

Page 24: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Musicheaders

Type Name Descriptionu8 NumTrks Numberoftracksinthesongu8 NumBlks Numberofblocks(?)u8 Priorityu8 Reverbu32 Voicegroup Pointertoinstrumentbanku32... Track Pointerstotracks

BuiltonMonday,March7th,2006

Page 25: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:HackerStuff

Page 26: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

MIDIReferenceNotethatnosingleGBAgamehastoconformtothisstandard.

Page 27: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

DrumKeys

Nuffsaid.

Page 28: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

PatchAssignments

Piano ChromaticPercussion Organ0Acousticgrandpiano 8Celesta 16Hammondorgan1Brightacousticpiano 9Glockenspiel 17Percussiveorgan2Electricgrandpiano 10Musicbox 18Rockorgan3Honky-tonkpiano 11Vibraphone 19Churchorgan4Rhodespiano 12Marimba 20Reedorgan5Chorusedpiano 13Xylophone 21Accordion6Harpsichord 14Tubularbells 22Harmonica7Clavinet 15Dulcimer 23Tangoaccordion

Guitar Bass Strings24Acousticguitar(nylon) 32Acousticbass 40Violin25Acousticguitar(steel) 33Electricbass(finger) 41Viola26Electricguitar(jazz) 34Electricbass(pick) 42Cello27Electricguitar(clean) 35Fretlessbass 43Contrabass28Electricguitar(muted) 36Slapbass1 44Tremolostrings29Overdrivenguitar 37Slapbass2 45Pizzicatostrings30Distortionguitar 38Synthbass1 46Orchestralharp31Guitarharmonics 39Synthbass2 47Timpani

Ensemble Brass Reed48Stringensemble1 56Trumpet 64Sopranosax49Stringensemble2 57Trombone 65Altosax50Synth.strings1 58Tuba 66Tenorsax51Synth.strings2 59Mutedtrumpet 67Baritonesax52ChoirAahs 60Frenchhorn 68Oboe53VoiceOohs 61Brasssection 69Englishhorn54Synthvoice 62Synth.brass1 70Bassoon55Orchestrahit 63Synth.brass2 71Clarinet

Pipe SynthLead SynthPad72Piccolo 80Lead1(square) 88Pad1(newage)73Flute 81Lead2(sawtooth) 89Pad2(warm)

Page 29: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

74Recorder 82Lead3(calliopelead) 90Pad3(polysynth)75Panflute 83Lead4(chifflead) 91Pad4(choir)76Bottleblow 84Lead5(charang) 92Pad5(bowed)77Shakuhachi 85Lead6(voice) 93Pad6(metallic)78Whistle 86Lead7(fifths) 94Pad7(halo)79Ocarina 87Lead8(brass+lead) 95Pad8(sweep)

SoundEffects120Guitarfretnoise121Breathnoise122Seashore123Birdtweet124Telephonering125Helicopter126Applause

BuiltonWednesday,April12th,2006

Page 30: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:Jukebox

Page 31: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

JukeboxDemoRomTheJukeboxDemoRomiswrittenbyKyoufuKawa,basedoncodefromCatnipDreams.EventhoughitdemonstratessimplepaletterotationandlesssimpleVariableWidthFonts,it'smainfocusistoplaysongsusingtheM4Aengine.

ControlsLeft/Right-Selectsong.Yourselectionwrapsaroundifneeded.Abutton-Playthecurrentlyselectedsong.Bbutton-Stopplaying.Shoulderbuttons-Playsoundeffects.

MiscellaneousinformationTherom'sinternalnameandgamecodeisKAWAJUKE2K6-KWJ6.IthasaMakerCodeof0xFF.ItwasmadewiththeofficialNintendo-brandGBAdevelopmentkit.IthastheuniquequalityofhavingallthesongdataatthestartoftheROM.

BuiltonThursday,September28th,2006

Page 32: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:Jukebox

Page 33: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

JukeboxSongCreditsListedintrackorder.Instrumentationhasbeenalteredandsometrackshavebeencompletelyremoved.

TestsongHand-codedbyKyoufuKawa

Keitaro'sTheme-"Memories"From"CatnipDreams",2005TheHelmetedRodent.ComposedbyMajinBluedragon.Thegamewasneverreleased,andsongsmayreturninlatergamesfromthesameauthors.

MonkeyIsland2ThemeSongFrom"MonkeyIsland2",LucasArts.RecordedfromDOSBox.

GRNFINALFrom"TheIncredibleToonMachine",Sierra.GameusedMIDIfiles.

CanonByPachelbel.FoundbyGoogle.

GrabbagFrom"DukeNukem3D",3DRealms.GameusesMIDIfiles.

AtDoom'sGate,KitchenAceandISawedtheDemonsFrom"Doom",iDsoftware.DownloadedfromDoomWorld.

EyecatcherFrom"AzumangaDaioh-TheAnime".

TIM1From"Lemmings",Psychnosis.

???From"NinjaGaiden".

Kawa'sComin'

Page 34: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

OriginalbyDJBouché,extendedversionbyBaro.

ZeroWingMedleyFrom"ZeroWing",Toaplan.SequencedandarrangedbyMarsJenkar.DownloadedfromVGMusic.

Hu-HaDschinghisKahnByDschinghisKahn.DownloadedfromsomeRussiansite.

500Miles(I'mGonnaBe)ByTheProclaimers.Downloadedfromakaraokesite.

PalletTownPortedfromPokémon.

ThexderthemeSequencedbyJanvanValburg.DownloadedfromVGMusic.

BuiltonFriday,December22nd,2006

Page 35: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:Registrykeys

Page 36: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

RegistrykeysAutoAdvance

Doesn'tdoanything.

BarXstateCollapsed/ExpandedstateoftheExplorerBarbars.

DriverWhichdrivertouse.

ForceNiceBarUsesystemstyleorfakeitout.Non-XPsystemsarefakedbydefault.

FMODVolumeVolumeatwhichtoplaythemusicwhenusingtheFMODdriver.

HideBarHidetheExplorerBarcompletely.MakestheplayerlooklikeBouché'soriginal.Taskscanbeselectedfromthemenu,butROMinformationisunavailable.

IncessantSoundOverrideDon'tplayanyIncessantSoundsiftrue.

LastROMFullfilenameofthelastROMyouopened.

MIDIDeviceIndexoftheMIDIOUTdevicetouse.

MIDIinGBModeReplacesallinstrumentswithsquareandsaw-wavesifset.

mIRCNowPlayingWriteNowPlayinginformationtosappy.stt.Usesappy.mrctoshowthisduringIRCsessions.

MSNNowPlayingSendNowPlayinginformationtoMSNMessenger.

NiceMenusWhenenabled,useOffice2003stylewhitemenus.Whendisabled,

Page 37: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

useolderstylegraymenus.

ReloadROMReloadthefilespecifiedin"LastROM"whenstartingup.

SeekbyPlaylistWhenenabled,thePrevious/Nextbuttonsgobyplaylistentriesinsteadofrawsongnumbers.

SettingsPageTheindexofthecurrentpageontheSettingswindow.Quickre-entry.

SkinSkin#touse.

SkinHue/SaturationColorizingvaluesfortheskin

SongRepeatsDeterminesthenumberoftimestorepeatplayback.

WindowHeightHeightofthemainwindowintwips.

WindowFont(Size)Allowsyoutochangethefontusedinthewindows.Defaultsto"LucidaSansUnicode",8points.

XMLFileXMLfiletouse.

BuiltonThursday,September28th,2006

Page 38: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Sappy2006:Trackbytecode

Page 39: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

TrackbytecodeWxx(0x80++)

Waitforthespecifiednumberofclockticks

FINE(0xB1)Musicalterm.Endsthetrack.

GOTO,label(0xB2)Unconditionaljump.

PATT,label(0xB3)Unconditionaljump,butrememberswheretoreturn.Canbenesteduptothreetimes.

PEND(0xB4)Endsapatternandreturnstoit'scallsource.Ignoredifnotcalledfromsomewhere.

REPT,xx,label(0xB5)Jumpstothespecifiedlabelxxtimes.Ifxxiszero,itrepeatsadinfinitumlikeaGOTO.REPTcommandscannotbenested,andcannotbespecifiedinaMIDIsequencer.

PRIO,xx(0xBA)Setsthepriorityofthetrack.xxisfrom0to255whendirectlyeditingthe.sfile,0to127inaMIDIsequencer.

TEMPO,xx/2(0xBB)Thissetsthetempooftheentiresong.xxisfrom22to510.

KEYSH,xx(0xBC)Thismodulatesthekeyofthetrack.xxisfrom-128to127.ThiscommandcannotbespecifiedinaMIDIsequencer.

Thefollowingcommandsarein"RunningStatus"mode.Thisallowsoperationfromtheirparametersalone,whichisgoodwhenawholelotareseeninsequence,likeapitchbendorvolumeslide.

VOICE,xx(0xBD)Selectsapatchforthistrack.xxisfrom0to127.

VOL,xx(0xBC)

Page 40: Sappy 2006: OMFG HELP!6 Harpsichord 14 Tubular bells 22 Harmonica 7 Clavinet 15 Dulcimer 23 Tango accordion Guitar Bass Strings 24 Acoustic guitar (nylon)32 Acoustic bass 40 Violin

Setsthetrackvolume.xxisfrom0to127.

PAN,xx(0xBF)Setsthetrack'sstereopanposition.xxisfrom-64to63,butifit'saCGBinstrument,hardwarerestrictionslimityoutojust"left","center"and"right".

BEND,cV+xx(0xC0)

BENDR,xx(0xC1)

LFOS,xx(0xC2)

LFODL,xx(0xC3)

MOD,xx(0xC4)

MODT,xx(0xC5)

TUNE,cV+xx(0xC8)

Thesearenotecommands.TheycanbeusedseamlesslywithRunningStatuscommandsbecauseoftheirbytecodes.

Nxx[,key[,vel]](0xD0++)Playsanote.xxisthenotelengthfrom00to96.24isaquarternote,96awhole.Keyisinthe"Cn3"formatwherethefirstcharacteristhenameofthenote("CDEFGAB"),thesecondeither"n"foranaturalor"s"forasharpandthethirdtheoctave.Therearealso"minusoctaves",writtenlike"CnM2"andstuff.OctaveseffectivelyrangefromM2to8.FromCnM2toGn8coversall127MIDIkeynumbers.Velocityrangesfrom0to127,butunlikeinMIDI,velocity0isnotsynonimousto"noteoff".

EOT[,key](0xCE)StopsthematchingTIEnote.

TIE[,key,[,vel]](0xCF)Thisnote,whichworksjustlikeNxx,continuestosounduntilthenextmatchingEOTcommand.

BuiltonFriday,November4th,2005