Difference between revisions of "User:Buddha^/GSoC2007-ProjectDiary"

Jump to navigation Jump to search
Fixed link (palex.py -> agi-palex.py)
(More info on SIERRASTANDARDs' differences and changed text somewhat.)
(Fixed link (palex.py -> agi-palex.py))
 
(24 intermediate revisions by the same user not shown)
Line 1: Line 1:
= [[User:Buddha^|Buddha^]]'s Google Summer of Code 2007 Project Diary =
Here's the archive of the project diary I kept during my
Google Summer of Code 2007 participation.
== 2007-05-28 (Monday) - GSoC starts! ==
== 2007-05-28 (Monday) - GSoC starts! ==


Line 646: Line 651:


So I made a tool for extracting palettes from Amiga AGI games' executable files
So I made a tool for extracting palettes from Amiga AGI games' executable files
and added it to ScummVM's trunk. You can see the source code [http://scummvm.svn.sourceforge.net/viewvc/scummvm/scummvm/trunk/tools/palex.py?revision=28035&view=markup here].
and added it to ScummVM's trunk. You can see the source code [http://scummvm.svn.sourceforge.net/viewvc/scummvm/scummvm/trunk/tools/agi-palex.py?revision=28035&view=markup here].
My first Python program, yay!
My first Python program, yay!


Line 1,377: Line 1,382:
Oh and I discovered/realized that at least Apple IIGS King's Quest I's volume
Oh and I discovered/realized that at least Apple IIGS King's Quest I's volume
files are not encrypted. So I can just go and write new MIDI codes straight
files are not encrypted. So I can just go and write new MIDI codes straight
into the files and run the game through and emulator to try to hear what
into the files and run the game through an emulator to try to hear what
program change corresponds to what instrument. Whee :-) This is good.
program change corresponds to what instrument. Whee :-) This is good.


Line 1,403: Line 1,408:


Been trying to reverse engineer the Apple IIGS AGI MIDI files' program change command's
Been trying to reverse engineer the Apple IIGS AGI MIDI files' program change command's
parameter value to instrument number mapping recently. Tried a few approached that didn't work
parameter value to instrument number mapping recently. Tried a few approaches that didn't work
but came up with a way that works quite well. Here's the preliminary mapping from
but came up with a way that works quite well. Here's the preliminary mapping from
program numbers to instrument numbers (Instrument number 6 seems to be mostly used to
program numbers to instrument numbers (Instrument number 6 seems to be mostly used to
Line 1,479: Line 1,484:
* Number of samples (Not all unique!):
* Number of samples (Not all unique!):
** 34
** 34
* Sample redundancy (May be incomplete):
** Samples 18 and 30 are identical (A base drum)
** Samples 21 and 31 are identical (Sounds like a drum stick hit)
** Samples 24 and 32 are identical (Sounds like hihat)
** Samples 27 and 33 are identical (Sounds quite like a shaman drum)
* "Dummy" samples
** Sample 4 is full of byte 0x50 (i.e. about -0.38 if amplitude is normalized to range [-1, +1])
* Unused samples (i.e. not used by the instrument data. May be incomplete):
** None of the instruments in either the older or the newer instrument set use samples 29-33
*** This means we could theoretically ditch the last 16KiB of the SIERRASTANDARD file
** None of the instruments in the older instrument set use samples 2-4
** None of the instruments in the newer instrument set use sample 4
* Sample sizes log2 (2**x will give the true sample size):
* Sample sizes log2 (2**x will give the true sample size):
** sampleSizesLog2 = [10, 10, 10, 9, 9, 10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 10, 10, 11, 10, 10, 11, 10, 10, 11, 10, 10, 11, 14, 13, 11, 11, 11, 11]
** sampleSizesLog2 = [10, 10, 10, 9, 9, 10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 10, 10, 11, 10, 10, 11, 10, 10, 11, 10, 10, 11, 14, 13, 11, 11, 11, 11]
Line 1,491: Line 1,508:
=== Differences between the older SIERRASTANDARD and the newer SIERRASTANDARD file ===
=== Differences between the older SIERRASTANDARD and the newer SIERRASTANDARD file ===


* Samples 2 and 3 (Offsets 2048-3071 and 3072-3583) differ between SIERRASTANDARD versions
Here are all the differences between the older and the newer SIERRASTANDARD file:
 
* Sample 2 (Offsets 2048-3071) differs between SIERRASTANDARD versions
** Sample data
** Sample data
*** The older version of sample 2 starts with some real sample data but a bit over half of it is completely silent (i.e. centerline i.e. byte 0x80)
*** The older version of sample 2 starts with some real sample data but a bit over half of it is completely silent (i.e. centerline i.e. byte 0x80)
*** Newer version of sample 2 contains real sample data
** Instrument usage
*** None of the instruments of the older instrument set use sample 2
*** Instruments 19 and 20 of the newer instrument set use sample 2
* Sample 3 (Offsets 3072-3583) differs between SIERRASTANDARD versions
** Sample data
*** The older version of sample 3 is full of byte 0x50
*** The older version of sample 3 is full of byte 0x50
*** Newer versions of samples 2 and 3 contain real sample data
*** The newer version of sample 3 contains real sample data
** Instrument usage
** Instrument usage
*** None of the instruments of the older instrument set use these samples
*** None of the instruments of the older instrument set use sample 3
*** The newer instrument set's instruments 19 and 20 use sample 2 and instrument 4 uses sample 3
*** Instrument 4 of the newer instrument set uses sample 3


* Sample 17 (Offsets 16384-17407) differs between SIERRASTANDARD versions:
* Sample 17 (Offsets 17408-18431) differs between SIERRASTANDARD versions
** Sample data
*** Both versions of SIERRASTANDARD use real sample data here
*** Newer version's sample has a higher pitch than the old version and the wave looks more triangle like
** Instrument usage
** Instrument usage
*** Instrument 18 of the older instrument set uses this sample
*** Instruments 5 and 18 of the older instrument set uses this sample
*** None of the instruments of the newer instrument set use this sample
*** Instrument 6 of the newer instrument set uses this sample


* Sample 27 (Offsets 29696-30719) differs between SIERRASTANDARD versions:
* Sample 27 (Offsets 30720-32767) differs between SIERRASTANDARD versions
** Sample data
** Sample data
*** The older version of sample 27 consists mostly of silence (Byte 0x80) followed by some 0x0F
*** The older version of sample 27 consists mostly of silence (Byte 0x80) followed by some 0x0F
*** The newer version uses real sample data here (Identical to the last sample i.e. sample 33)
** Instrument usage
** Instrument usage
*** Instruments 5 and 23 of the older instrument set use this sample
*** Instruments 5 and 23 of the older instrument set use this sample
*** Instruments 6 and 25 of the newer instrument set use this sample
*** Instruments 6 and 25 of the newer instrument set use this sample
== 2007-12-11 (Tuesday) - End of GSoC 2007 project diary ==
I thought I'd add a clarifying end note to my project diary. I'm not going to update the
diary anymore but I leave it here for archival purposes. It might prove an interesting or even
a useful read for someone else applying for GSoC in ScummVM. It was a good ride...
417

edits

Navigation menu