<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ValleyBell</id>
	<title>ModdingWiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ValleyBell"/>
	<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/wiki/Special:Contributions/ValleyBell"/>
	<updated>2026-05-14T05:47:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=8778</id>
		<title>OPL chip</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=8778"/>
		<updated>2019-07-27T07:40:24Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: /*B0-B8: Key On / Block Number / F-Number(hi bits)*/ Changing the frequency works on notes with long release rates. (That caused me trouble when trimming/looping VGMs of DOS Lemmings.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Programmer&#039;s Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer =&lt;br /&gt;
Version 1.00  Nov-24-1994&lt;br /&gt;
&lt;br /&gt;
Written by Vladimir Arnost, QA-Software&lt;br /&gt;
Internet:  xarnos00@dcse.fee.vutbr.cz&lt;br /&gt;
&lt;br /&gt;
This manual can be distributed freely if not modified.&lt;br /&gt;
&lt;br /&gt;
=== Disclaimer ===&lt;br /&gt;
&lt;br /&gt;
I assume no responsibility for any damages arising out of use or inability to use this text. No warranty is provided about correctness of any information in this file. You are on your own.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The chip I am going to describe is getting more and more common, but programming information is still scarce, so I have decided to fill in this gap. All information contained in this file is a result of my experience in Adlib programming, research (read: reverse engineering) and finally of my effort to write down everything necessary to understand and use this piece of hardware. No official sources (i.e. development kits, books about this topic, etc.) were available to me except:&lt;br /&gt;
&lt;br /&gt;
: Adlib Programming Guide - by Tero Töttö, and&lt;br /&gt;
: The PC Games Programmers Encyclopedia V1.0&lt;br /&gt;
&lt;br /&gt;
The information below is a combination of known features of Adlib (alias Yamaha YM 3812/OPL2) and my own uncountable experiments and failures, which brought out a lot of important details you have to know about the chip.&lt;br /&gt;
&lt;br /&gt;
As far as I know, there are four major sound cards based on OPL3 chip:&lt;br /&gt;
&lt;br /&gt;
* Sound Blaster Pro II (not Sound Blaster Pro I)&lt;br /&gt;
* Sound Blaster 16&lt;br /&gt;
* Adlib Gold&lt;br /&gt;
* Pro Audio Spectrum Plus/16&lt;br /&gt;
&lt;br /&gt;
I currently have a Sound Blaster Pro II-compatible card only, so all the programming info I provide will be based on this card. (The other cards are quite similar, however. They are just wired at different I/O-port addresses.)&lt;br /&gt;
&lt;br /&gt;
Note: I assume some knowledge of FM music programming (mainly Adlib FM synthesizer) in this manual. If you are new to this topic I recommend you try Adlib first before going higher. Anyway, OPL3 is a direct descendant of OPL2 (what a surprise), so most features of OPL2 are also present on OPL3.&lt;br /&gt;
&lt;br /&gt;
== Description of the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
My card&#039;s user manual says: &amp;quot;[this card contains] ... a stereo music FM synthesizer with 20 channels consisting of four (4) operators each ... &amp;quot; I thought: &amp;quot;Wow -- that&#039;s together eighty operators. This must be a GOOD sound-card.&amp;quot; I was wrong. Just another advertising lie.&lt;br /&gt;
&lt;br /&gt;
So let&#039;s clear some facts. First, OPL3 has only thirty-six (36) operators which can be combined in several ways:&lt;br /&gt;
&lt;br /&gt;
* 18 FM channels (36 operators), or&lt;br /&gt;
* 15 FM channels (30 ops) and 5 percussion instruments (6 ops), giving us 20 channels altogether, or&lt;br /&gt;
* up to 6 four-operator FM channels (max 24 ops), the rest again being divided into two-operator FM channels and drums.&lt;br /&gt;
&lt;br /&gt;
From the table above you can see that not all channels can be used in four-operator (4-OP) mode -- only a part of the synthesizer is really capable of making 4-OP sounds -- the rest uses traditional two-operator (2-OP) mode.&lt;br /&gt;
&lt;br /&gt;
Second, the manual states this card is capable of &amp;quot;stereo&amp;quot; music. Yes, the quotes are necessary, because the stereo capabilities are very limited. You are given ability to control output going to left or right channel by turning it on and off. That&#039;s all. So the sound can flow from very left side, center and very right side. No sound panning, no special stereo effects. :-(&lt;br /&gt;
&lt;br /&gt;
Well, flaming apart, back to the main topic.&lt;br /&gt;
&lt;br /&gt;
The OPL3 chip is capable of making sounds in several ways:&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Additive Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output of both operators is simply added. It is the simplest way to make any sound, and it works on both OPL2 and OPL3. The diagram should make it clear.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐&lt;br /&gt;
	│            │&lt;br /&gt;
	│ Operator 1 ├────────┐&lt;br /&gt;
	│            │        │&lt;br /&gt;
	└────────────┘        │&lt;br /&gt;
			      ├────────&amp;gt; Output&lt;br /&gt;
	┌────────────┐        │&lt;br /&gt;
	│            │        │&lt;br /&gt;
	│ Operator 2 ├────────┘&lt;br /&gt;
	│            │&lt;br /&gt;
	└────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Frequency Modulation (FM) Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output from the first operator (Modulator) is sent to the input of the second one (Carrier) and is used to modulate (alter) frequency of the second operator. Only the second operator produces sound. Most of interesting sounds are made this way. This also works on OPL2. Hope the picture helps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐         ┌────────────┐&lt;br /&gt;
	│            │         │            │&lt;br /&gt;
	│ Operator 1 ├────────&amp;gt;│ Operator 2 ├────────&amp;gt; Output&lt;br /&gt;
	│(Modulator) │         │ (Carrier)  │&lt;br /&gt;
	└────────────┘         └────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Four-operator &amp;quot;Mess&amp;quot; Modulation Synthesis ===&lt;br /&gt;
&lt;br /&gt;
All of OPL3&#039;s 4-OP configurations are combinations of the above two modes of synthesis. OPL3 combines these two modes in four ways. I have no words to describe these four ways. Only the pictures can show their principle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   a) FM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   b) AM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├───────────────────────────────────┐&lt;br /&gt;
	│       │                                   │&lt;br /&gt;
	└───────┘                                   │&lt;br /&gt;
						    │&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┴─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   c) FM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────┐&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     ├─────&amp;gt; Output&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┘&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	└───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   d) AM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├────────────────────┐&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	└───────┘                    │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────┼─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐                    │&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	│ Op. 4 ├────────────────────┘&lt;br /&gt;
	│       │&lt;br /&gt;
	└───────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nice, aren&#039;t they?&lt;br /&gt;
&lt;br /&gt;
The only way I think this can be written is a math formula. Symbol + (plus) means additive synthesis, and * (asterisk) means frequency modulation (Op1 * Op2 means operator 1 modulates operator 2, not vice versa). Here they are:&lt;br /&gt;
&lt;br /&gt;
# FM-FM Mode:	 (Op1 * Op2 * Op3 * Op4) ────&amp;gt; Output&lt;br /&gt;
# AM-FM Mode:	  Op1 + (Op2 * Op3 * Op4) ───&amp;gt; Output&lt;br /&gt;
# FM-AM Mode:	 (Op1 * Op2) + (Op3 * Op4) ──&amp;gt; Output&lt;br /&gt;
# AM-AM Mode:	  Op1 + (Op2 * Op3) + Op4 ───&amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
=== Percussion Mode ===&lt;br /&gt;
&lt;br /&gt;
In this mode 6 operators are used to produce five different percussion instruments:&lt;br /&gt;
&lt;br /&gt;
* Bass Drum (2 operators)&lt;br /&gt;
* Snare Drum (1 operator)&lt;br /&gt;
* Tom-Tom (1 operator)&lt;br /&gt;
* Cymbal (1 operator)&lt;br /&gt;
* Hi-Hat (1 operator)&lt;br /&gt;
&lt;br /&gt;
Based on notes from MAME&#039;s OPL emulator, the following points hold true:&lt;br /&gt;
&lt;br /&gt;
* Setting the block/fnum on each percussive channel may affect multiple instruments.&lt;br /&gt;
** The pitch on channel 6 affects just the bass drum&lt;br /&gt;
** The pitch on channel 7 affects the hihat, cymbal and snare&lt;br /&gt;
** The pitch on channel 8 affects the hihat, cymbal and tomtom&lt;br /&gt;
* The modulator/carrier output level is used to set the volume of each instrument.&lt;br /&gt;
** channel 6 carrier controls the volume of the bass drum&lt;br /&gt;
** channel 7 modulator controls the volume of the hi-hat&lt;br /&gt;
** channel 7 carrier controls the volume of the snare&lt;br /&gt;
** channel 8 modulator controls the volume of the tomtom&lt;br /&gt;
** channel 8 carrier controls the volume of the cymbal&lt;br /&gt;
* Panning L/R bits set via register 0xC0 affect instruments as follows:&lt;br /&gt;
** channel 6 affects the bass drum&lt;br /&gt;
** channel 7 affects hi-hat and snare&lt;br /&gt;
** channel 8 affects cymbal and tomtom&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;AdLib Programmer&#039;s Manual&#039;&#039; contains playback code that uses the Tom-Tom frequency for all percussion instruments.  It is possible this is the source of the confusion.  Here, when a note is played on the Tom-Tom channel, that note will of course cause the Top Cymbal to change as well because of the shared channel.  But the code increases this pitch by seven semitones and sets that frequency for channel 7 at the same time, ensuring the Hi-Hat and Snare Drum are always set to seven semitones above the last Tom-Tom note.  (See [[AdLib MIDI Format]] for details.)&lt;br /&gt;
&lt;br /&gt;
This mode is identical with that of OPL2. For more details see ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
== Programming the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
OPL3 may be found at the following addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Sound Blaster Pro II || 220h or 240h (selectable), also 388h&lt;br /&gt;
|-&lt;br /&gt;
| Adlib Gold || 388h&lt;br /&gt;
|-&lt;br /&gt;
| Pro Audio Spectrum Plus/16 || ? (if you have a PAS you should know it)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The base address of the synthesizer will be called &amp;quot;base&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The chip occupies four I/O addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| base+0 || Primary index register (write), Status register (read)&lt;br /&gt;
|-&lt;br /&gt;
| base+1 || Primary data register (write-only)&lt;br /&gt;
|-&lt;br /&gt;
| base+2 || Secondary index register (write)&lt;br /&gt;
|-&lt;br /&gt;
| base+3 || Secondary data register (write-only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The index registers are used to select internal registers and data registers are used to write to them. Status register returns the state of two timers built in the chip.&lt;br /&gt;
&lt;br /&gt;
OPL3 contains two sets of registers. The Primary set maps to channels 0-8 (operators 0-17) and the secondary maps to channels 9-17 (operators 18-35). The reason for this is simple: all these registers wouldn&#039;t fit into single register set.&lt;br /&gt;
&lt;br /&gt;
Unlike Adlib (OPL2), OPL3 doesn&#039;t need delay between register writes. With OPL2 you had to wait 3.3 µs after index register write and another 23 µs after data register write. On the contrary OPL3 doesn&#039;t need (almost) any delay after index register write and only 0.28 µs after data register write. This means you can neglect the delays and slightly speed up your music driver. But using reasonable delays will certainly do no harm.&lt;br /&gt;
&lt;br /&gt;
The data registers can&#039;t be read (they are write-only) on both OPL2 and OPL3.&lt;br /&gt;
&lt;br /&gt;
== Register Map ==&lt;br /&gt;
&lt;br /&gt;
The registers are grouped in the same manner as in the OPL2 chip. Programs using both OPL2 and OPL3 chips may use the same code provided that their direct I/O interface is well written. The only thing you have to change is operator-to-register mapping, which must accomodate the fact that registers are spread between two register sets.&lt;br /&gt;
&lt;br /&gt;
(The register map is nearly the same so I dared to copy it from ADLIB.DOC.)&lt;br /&gt;
&lt;br /&gt;
=== Status Register (base+0) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
!    D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQFlag || T1Flag || T2Flag ||        ||        ||        ||        ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Data Registers (base+1, base+3) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! REG   !!   D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| 01    ||colspan=2| Test Register ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|(WSEnable)||colspan=5| Test Register&lt;br /&gt;
|-&lt;br /&gt;
| 02    ||colspan=8| Timer 1 Count (80 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 03    ||colspan=8| Timer 2 Count (320 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 04*   ||IRQReset|| T1Mask || T2Mask ||colspan=3|                  ||T2 Start||T1 Start&lt;br /&gt;
|-&lt;br /&gt;
| 04**  ||colspan=2|        ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP B-E||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP A-D||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 9-C||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 2-5||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 1-4||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 0-3&lt;br /&gt;
|-&lt;br /&gt;
| 05**  ||colspan=7|                                                           ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| OPL3&lt;br /&gt;
|-&lt;br /&gt;
| 08    ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| (CSW)  ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|NOTE-SEL||colspan=6|&lt;br /&gt;
|-&lt;br /&gt;
| 20-35 ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Tremolo ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Vibrato ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Sustain ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|  KSR   ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Frequency Multiplication Factor&lt;br /&gt;
|-&lt;br /&gt;
| 40-55 ||colspan=2 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Key Scale Level ||colspan=6 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 60-75 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Attack Rate ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 80-95 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Sustain Level ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A0-A8 ||colspan=8 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Frequency Number  (Lower 8 bits)&lt;br /&gt;
|-&lt;br /&gt;
| B0-B8 ||colspan=2|        ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| KEY-ON ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Block Number ||colspan=2 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| F-Num (hi bits)&lt;br /&gt;
|-&lt;br /&gt;
| BD    ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Trem Dep||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Vibr Dep||style=&amp;quot;background-color: #FFCCDD;&amp;quot;|PercMode||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| BD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| SD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| TT On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| CY On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| HH On&lt;br /&gt;
|-&lt;br /&gt;
| C0-C8 ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_D ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_C ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Right  ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Left   ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;|FeedBack Modulation Factor||style=&amp;quot;background-color: #FFE0CC;&amp;quot;|SynthTyp&lt;br /&gt;
|-&lt;br /&gt;
| E0-F5 ||colspan=5|                                      ||colspan=3 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;background-color: #CCFFCC;&amp;quot;| Chip-wide setting&lt;br /&gt;
|style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Per operator&lt;br /&gt;
|style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Per channel&lt;br /&gt;
|style=&amp;quot;background-color: #FFCCDD;&amp;quot;| Rhythm-mode only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; This applies only to port base+1&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; This applies only to port base+3&lt;br /&gt;
&lt;br /&gt;
For register bases A0, B0 and C0 there is one register per output channel. The primary register set holds the first nine channels (0-8) and the secondary holds last nine channels (9-17). For bases 20, 40, 60, 80 and E0 there are two registers per channel. Each register maps to one operator. Unfortunately the operator&#039;s register numbers are not continuous. The following table shows which operator maps to which register set and offset (in hex).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Op. !! Set/Offset !! Op. !! Set/Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0  || 0/00 || 18 || 1/00&lt;br /&gt;
|-&lt;br /&gt;
| 1  || 0/01 || 19 || 1/01&lt;br /&gt;
|-&lt;br /&gt;
| 2  || 0/02 || 20 || 1/02&lt;br /&gt;
|-&lt;br /&gt;
| 3  || 0/03 || 21 || 1/03&lt;br /&gt;
|-&lt;br /&gt;
| 4  || 0/04 || 22 || 1/04&lt;br /&gt;
|-&lt;br /&gt;
| 5  || 0/05 || 23 || 1/05&lt;br /&gt;
|-&lt;br /&gt;
| 6  || 0/08 || 24 || 1/08&lt;br /&gt;
|-&lt;br /&gt;
| 7  || 0/09 || 25 || 1/09&lt;br /&gt;
|-&lt;br /&gt;
| 8  || 0/0A || 26 || 1/0A&lt;br /&gt;
|-&lt;br /&gt;
| 9  || 0/0B || 27 || 1/0B&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 0/0C || 28 || 1/0C&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 0/0D || 29 || 1/0D&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 0/10 || 30 || 1/10&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 0/11 || 31 || 1/11&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 0/12 || 32 || 1/12&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0/13 || 33 || 1/13&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 0/14 || 34 || 1/14&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 0/15 || 35 || 1/15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following tables summarize which operators form a channel in various modes:&lt;br /&gt;
&lt;br /&gt;
1. Two-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel    !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 13 || 14 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 || 16 || 17 || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
2. Two-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 ||colspan=4| - || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
3. Four-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 13 || 14 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 || 16 || 17 || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=3| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=3| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channels 3, 4, 5 and 12, 13, 14 can&#039;t be used separately because their operators became part of channels 0, 1, 2 and 9, 10, 11 respectively. For instance a four-operator channel 1 consists of two two-operator channels number 1 and 4. (The second 2-OP channel number is always the first 2-OP channel number plus three.)&lt;br /&gt;
&lt;br /&gt;
OPL3 allows you to enable/disable 4-OP mode separately for any of channels 0, 1, 2, 9, 10 and 11 (see register 104h in the reference below). This means for instance when you switch only channel 2 into 4-OP mode, channels number 0, 1, 3, 4, 6, 7, 8, 9, etc. will be still independent 2-OP channels.&lt;br /&gt;
&lt;br /&gt;
Channels 6, 7, 8 and 15, 16, 17 are always two-operator ones. They can&#039;t be grouped to form four-operator channels.&lt;br /&gt;
&lt;br /&gt;
4. Four-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 ||colspan=4| - || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=5| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=5| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Two-operator channel #14 consists of operators 26 and 29 which occupy these registers (all are in the secondary register set):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 12A || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 12D || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 14A || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 14D || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 16A || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 16D || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18A || Operator 1 ||Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18D || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 1A5 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| 1B5 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| 1C5 ||            || FeedBack/Synthesis Type&lt;br /&gt;
|-&lt;br /&gt;
| 1EA || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| 1ED || Operator 2 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Four-operator channel #1 consists of operators 1, 4, 7 and 10. All registers except register 104h are in the primary set:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 104 || bit 1 = 1  || Enable Four-Operator Synthesis in channel #1&lt;br /&gt;
|-&lt;br /&gt;
| 21 || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 24 || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 29 || Operator 3 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 2C || Operator 4 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 41 || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 44 || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 49 || Operator 3 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 4C || Operator 4 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 61 || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 64 || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 69 || Operator 3 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 6C || Operator 4 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 81 || Operator 1 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 84 || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 89 || Operator 3 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 8C || Operator 4 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A1 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| A4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| B1 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| B4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| C1 ||            || FeedBack/Synthesis Type (part 1)&lt;br /&gt;
|-&lt;br /&gt;
| C4 ||            || Synthesis Type (part 2)&lt;br /&gt;
|-&lt;br /&gt;
| E1 || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E4 || Operator 2 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E9 || Operator 3 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| EC || Operator 4 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
NOTE: If a register number is greater than 100h, then it belongs into the secondary register set. (I use this numbering to emphasize the fact that the particular register MUST be written to the secondary set.) See the example code below for details.&lt;br /&gt;
&lt;br /&gt;
== OPL3 Register Reference ==&lt;br /&gt;
&lt;br /&gt;
Because the registers of OPL3 are almost the same as of OPL2, I have copied their descriptions from file ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
=== Status Register ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || T1 || T2 ||colspan=5| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ Flag. Set whenever any timer has elapsed.&lt;br /&gt;
* bit 6: Timer 1 Flag. Set every time the preset time in Timer 1 has elapsed.&lt;br /&gt;
* bit 5: Timer 2 Flag. Set every time the preset time in Timer 2 has elapsed.&lt;br /&gt;
&lt;br /&gt;
Timer interrupts are not wired to any IRQ (why??). The timers can be used to detect the OPL2/OPL3 chip (see Appendix B).&lt;br /&gt;
&lt;br /&gt;
=== Data Registers ===&lt;br /&gt;
&lt;br /&gt;
==== 01: Test Register / Waveform Select Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| Test Register&lt;br /&gt;
| (WSE)&lt;br /&gt;
|colspan=5| Test Register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 7-6: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
* bit 5: Waveform Select Enable. If clear, all channels will use normal sine wave. If set, register E0-F5 (Waveform Select) contents will be used.&lt;br /&gt;
* bits 0-4: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
&lt;br /&gt;
OPL3 does not implement WSE bit, and it should be left clear. In OPL2 mode all four waveforms are always available, and in OPL3 mode all eight waveforms are always available. For compatibility with OPL2, when a program is finished using an OPL3, the waveform select registers should be set to 0, if the next program assumes that by setting WSE bit to 0 the waveform is always sine like on a real OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 02: Timer 1 Count ====&lt;br /&gt;
&lt;br /&gt;
Upward 8 bit counter with a resolution of 80 µsec. If an overflow occurs, the status register bit is set, and the preset value is loaded into the timer again.&lt;br /&gt;
&lt;br /&gt;
==== 03: Timer 2 Count ====&lt;br /&gt;
&lt;br /&gt;
Same as Timer 1, but with a resolution of 320 µsec.&lt;br /&gt;
&lt;br /&gt;
==== 004 (port: base+1): IRQ-Reset / Mask / Start ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Rst&lt;br /&gt;
| T1M&lt;br /&gt;
| T2M&lt;br /&gt;
|colspan=3| -&lt;br /&gt;
| T2S&lt;br /&gt;
| T1S&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ-Reset. Resets timer and IRQ flags in status register. All other bits are ignored when this bit is set.&lt;br /&gt;
* bit 6: Timer 1 Mask. If 1, status register is not affected in overflow.&lt;br /&gt;
* bit 5: Timer 2 Mask. Same as above.&lt;br /&gt;
* bit 1: Timer 2 Start. Timer on/off.&lt;br /&gt;
* bit 0: Timer 1 Start. Same as above.&lt;br /&gt;
&lt;br /&gt;
==== 104 (port: base+3): Four-Operator Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| ChB&lt;br /&gt;
| ChA&lt;br /&gt;
| Ch9&lt;br /&gt;
| Ch2&lt;br /&gt;
| Ch1&lt;br /&gt;
| Ch0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 5: Enable four-operator synthesis for channel pair 11 - 14 (decimal).&lt;br /&gt;
* bit 4: Same as above for channel pair 10 - 13.&lt;br /&gt;
* bit 3: Same as above for channel pair 9 - 12.&lt;br /&gt;
* bit 2: Same as above for channel pair 2 - 5.&lt;br /&gt;
* bit 1: Same as above for channel pair 1 - 4.&lt;br /&gt;
* bit 0: Same as above for channel pair 0 - 3.&lt;br /&gt;
&lt;br /&gt;
If reset to zero, OPL3 can produce 18 two-operator sounds at a time. If nonzero, OPL3 produces four-operator sound in appropriate channel pair.&lt;br /&gt;
&lt;br /&gt;
==== 105 (port: base+3): OPL3 Mode Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=7| -&lt;br /&gt;
| OPL3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 0: OPL3 Mode Enable. When set, OPL3 extensions (36 operators, 4-OP synthesis, 8 waveforms, stereo output) can be used. When reset, the chip behaves as an ordinary OPL2. This bit is zero by default for compatibility with OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 08: CSW / NOTE-SEL ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| (CSW)&lt;br /&gt;
| N-S&lt;br /&gt;
|colspan=6| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: Composite sine wave mode on/off. All KEY-ON bits must be clear in order to use this mode. The card is unable to create any other sound when in CSW mode. (Unfortunately, I have no info how to use this mode :-&amp;lt; ). The CSW mode is not implemented on an OPL3 and this bit is ignored.&lt;br /&gt;
* bit 6: NOTE-SEL. Controls the split point of the keyboard. When 0, the keyboard split is the second bit from the bit 8 of the F-Number. When 1, the MSb of the F-Number is used. (???)&lt;br /&gt;
&lt;br /&gt;
The Note Select bit defines what kind of F-NUM values are used within an octave so the chip knows how to split an octave into two parts. When Note Select bit is 0, F-NUM values used within an octave all have their MSB bit (bit 9) set, ranging from 0x200 to 0x3FF, so the second most significant bit, bit 8 is used to determine if currently playing note belongs to lower (0x200-0x2FF) or upper (0x300-0x3FF) half within an octave. When Note Select bit is 1, the F-NUM value MSB bit, bit 9, is used to determine if the note belongs to lower (0x000-0x1FF) or upper (0x200-0x3FF) half within an octave.&lt;br /&gt;
&lt;br /&gt;
==== 20-35: Tremolo / Vibrato / Sustain / KSR / Frequency Multiplication Factor ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Sus&lt;br /&gt;
| KSR&lt;br /&gt;
|colspan=4| Multiplication&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude vibrato) on/off.&lt;br /&gt;
* bit 6:    Frequency vibrato on/off.&lt;br /&gt;
* bit 5:    Sound Sustaining. When 1, operator&#039;s output level will be held at its sustain level until a KEY-OFF is done.&lt;br /&gt;
* bit 4:    Envelope scaling (KSR) on/off. When 1, higher notes are shorter than lower notes.&lt;br /&gt;
* bits 0-3: Frequency Multiplication Factor (MULTI). Operator&#039;s frequency is set to (see registers A0, B0) F-Number * Factor.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! MULTI !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 40-55: Key Scale Level / Output Level ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| KSL&lt;br /&gt;
|colspan=6| Output level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 6-7: Key Scale Level. Attenuates output level towards higher pitch:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! KSL !! Attenuation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || -&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.0 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1.5 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 6.0 dB/oct&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The attenuation level is based on the 3-bit octave (block number) value and top four bits of the FNUM value, so each octave is subdivided into 16 parts.&lt;br /&gt;
&lt;br /&gt;
* bits 0-5: Output Level. Attenuates the operator output level. 0 is the loudest, 3F is the softest. Attenuation range is 48dB with 0.75dB resolution.&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| 24dB || 12dB || 6dB || 3dB || 1.5dB || 0.75dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In additive synthesis, varying the output level of any operator varies the volume of its corresponding channel. In FM synthesis, varying the output level of the carrier varies the volume of the channel. Varying the output of the modulator will change the frequency spectrum produced by the carrier. The following table summarizes which operators&#039; output levels should be updated when trying to change channel output level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Mode !! Op 1 !! Op 2 !! Op 3 !! Op 4&lt;br /&gt;
|-&lt;br /&gt;
| AM    || Y || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM    || - || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM-FM || - || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-FM || Y || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| FM-AM || - || Y || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-AM || Y || - || Y   || Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 60-75: Attack Rate / Decay Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Attack rate&lt;br /&gt;
|colspan=4| Decay rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Attack Rate. Determines the rising time for the sound. The higher the value, the faster the attack. If value is 0, the sound will never attack, and if value is 15, the volume jumps directly from minimum to maximum.&lt;br /&gt;
* bits 0-3: Decay Rate. Determines the diminishing time for the sound. The higher the value, the shorter the decay. If value is 0, the sound does not decay towards sustain level and stays at maximum volume after attack.&lt;br /&gt;
&lt;br /&gt;
==== 80-95: Sustain Level / Release Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Sustain level&lt;br /&gt;
|colspan=4| Release rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Sustain Level. Determines the point at which the sound ceases to decay and chages to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. 15 is the softest and 0 is the loudest sustain level. Note that the Sustain-bit in the register 20-35 must be set for this to have an effect. Otherwise the sound will continue with release phase after hitting sustain level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! SL3 !! SL2 !! SL1 !! SL0&lt;br /&gt;
|-&lt;br /&gt;
| -24dB || -12dB || -6dB || -3dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is an exception when all bits are set (value=15), the actual level is -93dB instead, matching as if the value were 31.&lt;br /&gt;
&lt;br /&gt;
* bits 0-3: Release Rate. Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. Value of 0 causes the sound not to release at all, it will continue to produce sound at level before KEY-OFF.&lt;br /&gt;
&lt;br /&gt;
Some songs (e.g. &amp;lt;tt&amp;gt;LAME intro tune for Xerox of INC.raw&amp;lt;/tt&amp;gt;) set the sustain and release values to the shortest (0xFF) while the note is still playing in order to immediately silence a note that would otherwise linger after keyoff.&lt;br /&gt;
&lt;br /&gt;
==== A0-A8: Frequency Number ====&lt;br /&gt;
&lt;br /&gt;
Determines the pitch of the note. Highest bits of F-Number are stored in the register below.&lt;br /&gt;
&lt;br /&gt;
==== B0-B8: Key On / Block Number / F-Number(hi bits) ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| Note on&lt;br /&gt;
|colspan=3| Block number&lt;br /&gt;
|colspan=2| Frequency num.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;note on&#039;&#039;&#039; bit is set to 1 to play a note on the channel, and 0 to silence the note.  Setting this value to 1 when a note is already playing has no effect (it does not retrigger the note.)&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block number&#039;&#039;&#039; is often referred to as the octave, but this is a misleading description.  The value of the block controls the frequency range spanned by the frequency numbers.  A larger block allows higher frequencies (pitch) to be reached, at the expense of there being a greater difference in pitch of two adjacent frequency numbers.  This works out well, since a low block number allows a very high pitch accuracy for deep notes where it is most noticeable, while high block numbers mean the coarse pitch settings need only be used at high frequencies where the coarseness is unnoticeable.&lt;br /&gt;
&lt;br /&gt;
The following table illustrates the effect of different block numbers.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2| Block !!colspan=2| Note frequency !!rowspan=2| Difference between&amp;lt;br/&amp;gt;adjacent notes (Hz)&lt;br /&gt;
|-&lt;br /&gt;
! F-num=1 !! F-num=1023&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 0 ||align=right| 0.047 Hz ||align=right| 48.503 Hz ||align=right| 0.048 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 1 ||align=right| 0.094 Hz ||align=right| 97.006 Hz ||align=right| 0.095 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 2 ||align=right| 0.189 Hz ||align=right| 194.013 Hz ||align=right| 0.190 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 3 ||align=right| 0.379 Hz ||align=right| 388.026 Hz ||align=right| 0.379 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 4 ||align=right| 0.758 Hz ||align=right| 776.053 Hz ||align=right| 0.759 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 5 ||align=right| 1.517 Hz ||align=right| 1,552.107 Hz ||align=right| 1.517 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 6 ||align=right| 3.034 Hz ||align=right| 3,104.215 Hz ||align=right| 3.034 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 7 ||align=right| 6.068 Hz ||align=right| 6,208.431 Hz ||align=right| 6.069 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This shows that block 7 is capable of reaching the highest note (6.2kHz) but since there are 6Hz between notes the accuracy suffers.  Note A-4 is 440Hz but in this block, the two closest frequency numbers are 72 and 73, which create tones at 437Hz and 443Hz respectively, neither of which is particularly accurate.  Blocks 3 and below are unable to reach as high as 440Hz, but block 4 can.  With block 4, frequency numbers 579 and 580 produce 439.4Hz and 440.2Hz, considerably closer to the intended frequency.&lt;br /&gt;
&lt;br /&gt;
In other words, when calculating notes, the best accuracy is achieved by selecting the lowest possible block number that can reach the desired note frequency.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;frequency number&#039;&#039;&#039; is split between registers A0 and B0, with the upper two bits being stored here.  The full frequency number is a value between 0 and 1023 inclusive.  The following formula is used to determine the frequency number for a given note frequency (in Hertz) and block:&lt;br /&gt;
&lt;br /&gt;
: f-num = freq * 2^(20 - block) / 49716&lt;br /&gt;
&lt;br /&gt;
This formula can produce frequency numbers outside of the allowed 0-1023 range if the block number is too low, or the frequency is higher than the hardware can produce.&lt;br /&gt;
&lt;br /&gt;
The sampling frequency of OPL2 and OPL3 chips is approximately 49716 Hz, leading to the constant in the formula.  Occasionally this is rounded to 50000 leading to a small pitch variation if the wrong constant is used to play these songs.  OPL2 cards like Adlib and early Sound Blasters used the 14.31818 MHz oscillator signal from ISA bus slot and divided it by four on card, thus running the OPL2 chip at 3.579545 MHz, which gets divided internally by 72 to get the sampling rate. OPL3 cards had to be compatible, and mostly the sound cards have separate 14.31818 MHz oscillator on board which the OPL3 uses directly, and this gets divided internally by 288 to get the sampling rate.&lt;br /&gt;
&lt;br /&gt;
NOTE: In four-operator mode only the register value of Operators 1 and 2 is used, value of Operators 3 and 4 in this register is ignored. In other words: one channel uses only one frequency, block and KEY-ON value at a time, regardless whether it is a two- or four-operator channel.&lt;br /&gt;
&lt;br /&gt;
Setting the frequency and/or block has an immediate effect, regardless of the state of the &#039;&#039;note on&#039;&#039; bit. By changing the values gradually, pitch bends can be achieved.&lt;br /&gt;
&lt;br /&gt;
==== BD: Tremolo Depth / Vibrato Depth / Percussion Mode / BD/SD/TT/CY/HH On ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Per&lt;br /&gt;
| BD&lt;br /&gt;
| SD&lt;br /&gt;
| TT&lt;br /&gt;
| CY&lt;br /&gt;
| HH&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude Vibrato) Depth. 0 = 1.0dB, 1 = 4.8dB.&lt;br /&gt;
* bit 6:    Frequency Vibrato Depth. 0 = 7 cents, 1 = 14 cents. A &amp;quot;cent&amp;quot; is 1/100 of a semi-tone.&lt;br /&gt;
* bit 5:    Percussion Mode. 0 = Melodic Mode, 1 = Percussion Mode.&lt;br /&gt;
* bit 4:    BD On. KEY-ON of the Bass Drum channel.&lt;br /&gt;
* bit 3:    SD On. KEY-ON of the Snare Drum channel.&lt;br /&gt;
* bit 2:    TT On. KEY-ON of the Tom-Tom channel.&lt;br /&gt;
* bit 1:    CY On. KEY-ON of the Cymbal channel.&lt;br /&gt;
* bit 0:    HH On. KEY-ON of the Hi-Hat channel.&lt;br /&gt;
&lt;br /&gt;
NOTE: KEY-ON bits of channels 6, 7 and 8 must be clear and their F-Nums, Attack/Decay/Release rates, etc. must be set properly to use percussion mode.&lt;br /&gt;
&lt;br /&gt;
==== C0-C8: FeedBack Modulation Factor / Synthesis Type ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| OutCh_D&lt;br /&gt;
| OutCh_C&lt;br /&gt;
| R&lt;br /&gt;
| L&lt;br /&gt;
|colspan=3| Feedback&lt;br /&gt;
| Syn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: CHD, Output Channel D Enable. When set, channel output goes to fourth digital audio output channel.&lt;br /&gt;
* bit 6: CHC, Output Channel C Enable. When set, channel output goes to third digital audio output channel.&lt;br /&gt;
* bit 5:    Right Speaker Enable. When set, channel output goes to second digital audio output channel, connected to right speaker.&lt;br /&gt;
* bit 4:    Left Speaker Enable. When set, channel output goes to first digital audio output channel, connected to left speaker.&lt;br /&gt;
** In OPL3 mode, at least one of the left/right bits must be set to hear the channel.&lt;br /&gt;
** In OPL2 mode, these bits are ignored and audio is sent to all channels for compatibility reasons.&lt;br /&gt;
** Left/Right bits can be used to realize sound &amp;quot;panning&amp;quot;, but this method offers only three pan positions (left/center/right).&lt;br /&gt;
** These bits apply only to operators producing sound (Carriers). Modulators are not affected by their setting.&lt;br /&gt;
** Sound cards use only one stereo DAC, so only two of the four digital output channels are available.&lt;br /&gt;
* bits 1-3: FeedBack Modulation Factor. If 0, no feedback is present. If 1-7, operator 1 will send a portion of its output back into itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! FeedBack !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;amp;pi;/16&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;amp;pi;/8&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;amp;pi;/4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;amp;pi;/2&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 2&amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 4&amp;amp;pi;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When in four-operator mode, the FeedBack value is used only by Operator 1, value of Operators 2, 3 and 4 is ignored.&lt;br /&gt;
&lt;br /&gt;
* bit 0: Synthesis Type. 1 = Additive synthesis, 0 = Frequency Modulation.  In four-operator mode, there are two bits controlling the synthesis type. Both are the bit 0 of register C0, one of Operators 1 and 2 and the second of Operators 3 and 4.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Op 1&amp;amp;2 !! Op 3&amp;amp;4 !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0 || NONE || FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NONE || AM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || FM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || AM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || FM-AM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || AM-AM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== E0-F5: Waveform Select ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5| -&lt;br /&gt;
|colspan=3| Waveform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 0-2: WaveForm Select (WS): &amp;lt;gallery widths=261px perrow=4&amp;gt;&lt;br /&gt;
Image:OPL_Wave0_Digital.svg|Waveform 0: Sine&lt;br /&gt;
Image:OPL_Wave1_Digital.svg|Waveform 1: Half-sine&lt;br /&gt;
Image:OPL_Wave2_Digital.svg|Waveform 2: Abs-sine&lt;br /&gt;
Image:OPL_Wave3_Digital.svg|Waveform 3: Pulse-sine&lt;br /&gt;
Image:OPL_Wave4_Digital.svg|Waveform 4: Sine - even periods only&lt;br /&gt;
Image:OPL_Wave5_Digital.svg|Waveform 5: Abs-sine - even periods only&lt;br /&gt;
Image:OPL_Wave6_Digital.svg|Waveform 6: Square&lt;br /&gt;
Image:OPL_Wave7_Digital.svg|Waveform 7: Derived square&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOTE: Bit 5 of register 01 must be set to use waveforms other than sine. Waveforms 4-7 are available only on OPL3. See files WAVEn.GIF for real waveforms, where n is a number between 0 and 7.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
These examples show a few working routines used in my MUS Player. They are written in Borland C++ 3.1 but should be easy to translate to any other language.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
// I prefer using these Assembler-like types&lt;br /&gt;
typedef unsigned int  WORD;&lt;br /&gt;
typedef unsigned char BYTE;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * FM Synthesizer base port. SB Pro II - 0x220, Adlib 0x388&lt;br /&gt;
 */&lt;br /&gt;
WORD FMport = 0x220;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Enables OPL3 extensions.&lt;br /&gt;
 */&lt;br /&gt;
WORD OPL3 = 1;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Direct write to any Adlib/SB Pro II FM synthetiser register.&lt;br /&gt;
 *   reg - register number (range 0x001-0x0F5 and 0x101-0x1F5). When high byte&lt;br /&gt;
 *         of reg is zero, data go to port FMport, otherwise to FMport+2&lt;br /&gt;
 *   data - register value to be written&lt;br /&gt;
 */&lt;br /&gt;
BYTE FMwriteReg(WORD reg, BYTE data)&lt;br /&gt;
{&lt;br /&gt;
    asm {&lt;br /&gt;
	mov	dx,FMport&lt;br /&gt;
	mov	ax,reg&lt;br /&gt;
	or	ah,ah		// high byte is nonzero -- write to port base+2&lt;br /&gt;
	jz	out1&lt;br /&gt;
	inc	dx&lt;br /&gt;
	inc	dx&lt;br /&gt;
    }&lt;br /&gt;
out1: asm {&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	mov	cx,6&lt;br /&gt;
    }&lt;br /&gt;
loop1:asm {			// delay between writes&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop1&lt;br /&gt;
&lt;br /&gt;
	inc	dx&lt;br /&gt;
	mov	al,data&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	dec	dx&lt;br /&gt;
	mov	cx,36&lt;br /&gt;
    }&lt;br /&gt;
loop2:asm {			// delay after data write&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop2&lt;br /&gt;
    }&lt;br /&gt;
    return _AL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to an operator pair. To be used for register bases of 0x20, 0x40,&lt;br /&gt;
 * 0x60, 0x80 and 0xE0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteChannel(BYTE regbase, BYTE channel, BYTE data1, BYTE data2)&lt;br /&gt;
{&lt;br /&gt;
    static BYTE adlib_op[] = {0, 1, 2, 8, 9, 10, 16, 17, 18};&lt;br /&gt;
    static BYTE sbpro_op[] = { 0,  1,  2,   6,  7,  8,  12, 13, 14,&lt;br /&gt;
			      18, 19, 20,  24, 25, 26,  30, 31, 32};&lt;br /&gt;
    static WORD rg[] = {0x000,0x001,0x002,0x003,0x004,0x005,&lt;br /&gt;
			0x008,0x009,0x00A,0x00B,0x00C,0x00D,&lt;br /&gt;
			0x010,0x011,0x012,0x013,0x014,0x015,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,&lt;br /&gt;
			0x108,0x109,0x10A,0x10B,0x10C,0x10D,&lt;br /&gt;
			0x110,0x111,0x112,0x113,0x114,0x115};&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
    {&lt;br /&gt;
	register WORD reg = sbpro_op[channel];&lt;br /&gt;
	FMwriteReg(rg[reg]+regbase, data1);&lt;br /&gt;
	FMwriteReg(rg[reg+3]+regbase, data2);&lt;br /&gt;
    } else {&lt;br /&gt;
	register WORD reg = regbase+adlib_op[channel];&lt;br /&gt;
	FMwriteReg(reg, data1);&lt;br /&gt;
	FMwriteReg(reg+3, data2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to channel a single value. To be used for register bases of&lt;br /&gt;
 * 0xA0, 0xB0 and 0xC0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteValue(BYTE regbase, BYTE channel, BYTE value)&lt;br /&gt;
{&lt;br /&gt;
    static WORD ch[] = {0x000,0x001,0x002,0x003,0x004,0x005,0x006,0x007,0x008,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,0x106,0x107,0x108};&lt;br /&gt;
    register WORD chan;&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
	chan = ch[channel];&lt;br /&gt;
    else&lt;br /&gt;
	chan = channel;&lt;br /&gt;
    FMwriteReg(regbase + chan, value);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Detection Methods ==&lt;br /&gt;
&lt;br /&gt;
An official method of Adlib (OPL2) detection is:&lt;br /&gt;
&lt;br /&gt;
# Reset Timer 1 and Timer 2: write 60h to register 4.&lt;br /&gt;
# Reset the IRQ: write 80h to register 4.&lt;br /&gt;
#* NOTE: Steps 1 and 2 can&#039;t be combined together.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Set Timer 1 to FFh: write FFh to register 2.&lt;br /&gt;
# Unmask and start Timer 1: write 21h to register 4.&lt;br /&gt;
# Wait in a delay loop for at least 80 µsec.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Reset Timer 1, Timer 2 and IRQ as in steps 1 and 2.&lt;br /&gt;
# Test the results of the two reads: the first should be 0, the second should be C0h. If either is incorrect, then the OPL2 is not present.&lt;br /&gt;
&lt;br /&gt;
* NOTE1: You should AND the result bytes with E0h because the unused bits are undefined.&lt;br /&gt;
* NOTE2: This testing method doesn&#039;t work in some SoundBlaster compatible cards.&lt;br /&gt;
&lt;br /&gt;
=== OPL3 Detection ===&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
# Detect OPL2. If present, continue.&lt;br /&gt;
# Read status register: read port base+0.&lt;br /&gt;
# AND the result with 06h.&lt;br /&gt;
# If the result is zero, you have OPL3, otherwise OPL2.&lt;br /&gt;
&lt;br /&gt;
* NOTE: This is NOT an official method. I have dug it out of a sound driver. I haven&#039;t tested it, because I haven&#039;t an OPL2 card (Adlib, SB Pro I). Nevertheless it &amp;quot;detects&amp;quot; my SB Pro II properly. ;-)&lt;br /&gt;
&lt;br /&gt;
Another possible detection method for distinguishing between SB Pro I and SB Pro II would be to try to detect OPL2 at I/O port base+0 and then at port base+2. The first test should succeed and the second should fail if OPL3 is present. (Remember: SB Pro I contains twin OPL2 chips at addresses base+0 and base+2, while SB Pro II contains one OPL3 chip at I/O address base+0 thru base+3).&lt;br /&gt;
&lt;br /&gt;
== BLASTER Environment Variable ==&lt;br /&gt;
&lt;br /&gt;
Perhaps the most recommended &amp;quot;detection&amp;quot; method. Reading this variable avoids blindfold I/O port scanning and possible device conflicts. The user is responsible for its proper setting.&lt;br /&gt;
&lt;br /&gt;
The variable has this format:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=Aaddr Iirq Ddma Ttype&lt;br /&gt;
&lt;br /&gt;
* A: Base I/O address given in hex. For most Sound Blasters the default is 220.&lt;br /&gt;
* I: IRQ Number (decimal). Default 7.&lt;br /&gt;
* D: DMA Number (decimal). Default 1.&lt;br /&gt;
* T: Card Type (decimal):&lt;br /&gt;
** 1 - Sound Blaster 1.5&lt;br /&gt;
** 2 - Sound Blaster Pro I&lt;br /&gt;
** 3 - Sound Blaster 2.0&lt;br /&gt;
** 4 - Sound Blaster Pro II&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=A220 I7 D1 T4&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The PC Games Programmers Encyclopedia&#039;&#039;, Mark Feldman and many others on Usenet and Internet, http://bespin.org/~qz/pc-gpe/&lt;br /&gt;
: ... you can find (almost) everything you need there&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sound Blaster - The Official Book&#039;&#039;, Richard Heimlich, David M. Golden, Ivan Luk, Peter M. Ridge, Osborne/McGraw Hill, ISBN 0-07-881907-5&lt;br /&gt;
: ... this is a number-one in my book-wishlist. If anyone wanted to get rid of the book, I wouldn&#039;t scorn it ... :-)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The SoundBlaster Developer Kit&#039;&#039;, Creative Labs Inc, Creative Technology PTE LTD&lt;br /&gt;
: ... I wonder if you can find something comprehensible in that.&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=8777</id>
		<title>OPL chip</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=8777"/>
		<updated>2019-07-27T07:32:22Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: /*Percussion Mode*/ fix notes for percussion mode, based on MAME emulation (I once verified that panning works exactly like this on my SB16.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Programmer&#039;s Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer =&lt;br /&gt;
Version 1.00  Nov-24-1994&lt;br /&gt;
&lt;br /&gt;
Written by Vladimir Arnost, QA-Software&lt;br /&gt;
Internet:  xarnos00@dcse.fee.vutbr.cz&lt;br /&gt;
&lt;br /&gt;
This manual can be distributed freely if not modified.&lt;br /&gt;
&lt;br /&gt;
=== Disclaimer ===&lt;br /&gt;
&lt;br /&gt;
I assume no responsibility for any damages arising out of use or inability to use this text. No warranty is provided about correctness of any information in this file. You are on your own.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The chip I am going to describe is getting more and more common, but programming information is still scarce, so I have decided to fill in this gap. All information contained in this file is a result of my experience in Adlib programming, research (read: reverse engineering) and finally of my effort to write down everything necessary to understand and use this piece of hardware. No official sources (i.e. development kits, books about this topic, etc.) were available to me except:&lt;br /&gt;
&lt;br /&gt;
: Adlib Programming Guide - by Tero Töttö, and&lt;br /&gt;
: The PC Games Programmers Encyclopedia V1.0&lt;br /&gt;
&lt;br /&gt;
The information below is a combination of known features of Adlib (alias Yamaha YM 3812/OPL2) and my own uncountable experiments and failures, which brought out a lot of important details you have to know about the chip.&lt;br /&gt;
&lt;br /&gt;
As far as I know, there are four major sound cards based on OPL3 chip:&lt;br /&gt;
&lt;br /&gt;
* Sound Blaster Pro II (not Sound Blaster Pro I)&lt;br /&gt;
* Sound Blaster 16&lt;br /&gt;
* Adlib Gold&lt;br /&gt;
* Pro Audio Spectrum Plus/16&lt;br /&gt;
&lt;br /&gt;
I currently have a Sound Blaster Pro II-compatible card only, so all the programming info I provide will be based on this card. (The other cards are quite similar, however. They are just wired at different I/O-port addresses.)&lt;br /&gt;
&lt;br /&gt;
Note: I assume some knowledge of FM music programming (mainly Adlib FM synthesizer) in this manual. If you are new to this topic I recommend you try Adlib first before going higher. Anyway, OPL3 is a direct descendant of OPL2 (what a surprise), so most features of OPL2 are also present on OPL3.&lt;br /&gt;
&lt;br /&gt;
== Description of the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
My card&#039;s user manual says: &amp;quot;[this card contains] ... a stereo music FM synthesizer with 20 channels consisting of four (4) operators each ... &amp;quot; I thought: &amp;quot;Wow -- that&#039;s together eighty operators. This must be a GOOD sound-card.&amp;quot; I was wrong. Just another advertising lie.&lt;br /&gt;
&lt;br /&gt;
So let&#039;s clear some facts. First, OPL3 has only thirty-six (36) operators which can be combined in several ways:&lt;br /&gt;
&lt;br /&gt;
* 18 FM channels (36 operators), or&lt;br /&gt;
* 15 FM channels (30 ops) and 5 percussion instruments (6 ops), giving us 20 channels altogether, or&lt;br /&gt;
* up to 6 four-operator FM channels (max 24 ops), the rest again being divided into two-operator FM channels and drums.&lt;br /&gt;
&lt;br /&gt;
From the table above you can see that not all channels can be used in four-operator (4-OP) mode -- only a part of the synthesizer is really capable of making 4-OP sounds -- the rest uses traditional two-operator (2-OP) mode.&lt;br /&gt;
&lt;br /&gt;
Second, the manual states this card is capable of &amp;quot;stereo&amp;quot; music. Yes, the quotes are necessary, because the stereo capabilities are very limited. You are given ability to control output going to left or right channel by turning it on and off. That&#039;s all. So the sound can flow from very left side, center and very right side. No sound panning, no special stereo effects. :-(&lt;br /&gt;
&lt;br /&gt;
Well, flaming apart, back to the main topic.&lt;br /&gt;
&lt;br /&gt;
The OPL3 chip is capable of making sounds in several ways:&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Additive Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output of both operators is simply added. It is the simplest way to make any sound, and it works on both OPL2 and OPL3. The diagram should make it clear.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐&lt;br /&gt;
	│            │&lt;br /&gt;
	│ Operator 1 ├────────┐&lt;br /&gt;
	│            │        │&lt;br /&gt;
	└────────────┘        │&lt;br /&gt;
			      ├────────&amp;gt; Output&lt;br /&gt;
	┌────────────┐        │&lt;br /&gt;
	│            │        │&lt;br /&gt;
	│ Operator 2 ├────────┘&lt;br /&gt;
	│            │&lt;br /&gt;
	└────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Frequency Modulation (FM) Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output from the first operator (Modulator) is sent to the input of the second one (Carrier) and is used to modulate (alter) frequency of the second operator. Only the second operator produces sound. Most of interesting sounds are made this way. This also works on OPL2. Hope the picture helps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐         ┌────────────┐&lt;br /&gt;
	│            │         │            │&lt;br /&gt;
	│ Operator 1 ├────────&amp;gt;│ Operator 2 ├────────&amp;gt; Output&lt;br /&gt;
	│(Modulator) │         │ (Carrier)  │&lt;br /&gt;
	└────────────┘         └────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Four-operator &amp;quot;Mess&amp;quot; Modulation Synthesis ===&lt;br /&gt;
&lt;br /&gt;
All of OPL3&#039;s 4-OP configurations are combinations of the above two modes of synthesis. OPL3 combines these two modes in four ways. I have no words to describe these four ways. Only the pictures can show their principle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   a) FM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   b) AM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├───────────────────────────────────┐&lt;br /&gt;
	│       │                                   │&lt;br /&gt;
	└───────┘                                   │&lt;br /&gt;
						    │&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┴─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   c) FM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────┐&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     ├─────&amp;gt; Output&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┘&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	└───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   d) AM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├────────────────────┐&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	└───────┘                    │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────┼─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐                    │&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	│ Op. 4 ├────────────────────┘&lt;br /&gt;
	│       │&lt;br /&gt;
	└───────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nice, aren&#039;t they?&lt;br /&gt;
&lt;br /&gt;
The only way I think this can be written is a math formula. Symbol + (plus) means additive synthesis, and * (asterisk) means frequency modulation (Op1 * Op2 means operator 1 modulates operator 2, not vice versa). Here they are:&lt;br /&gt;
&lt;br /&gt;
# FM-FM Mode:	 (Op1 * Op2 * Op3 * Op4) ────&amp;gt; Output&lt;br /&gt;
# AM-FM Mode:	  Op1 + (Op2 * Op3 * Op4) ───&amp;gt; Output&lt;br /&gt;
# FM-AM Mode:	 (Op1 * Op2) + (Op3 * Op4) ──&amp;gt; Output&lt;br /&gt;
# AM-AM Mode:	  Op1 + (Op2 * Op3) + Op4 ───&amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
=== Percussion Mode ===&lt;br /&gt;
&lt;br /&gt;
In this mode 6 operators are used to produce five different percussion instruments:&lt;br /&gt;
&lt;br /&gt;
* Bass Drum (2 operators)&lt;br /&gt;
* Snare Drum (1 operator)&lt;br /&gt;
* Tom-Tom (1 operator)&lt;br /&gt;
* Cymbal (1 operator)&lt;br /&gt;
* Hi-Hat (1 operator)&lt;br /&gt;
&lt;br /&gt;
Based on notes from MAME&#039;s OPL emulator, the following points hold true:&lt;br /&gt;
&lt;br /&gt;
* Setting the block/fnum on each percussive channel may affect multiple instruments.&lt;br /&gt;
** The pitch on channel 6 affects just the bass drum&lt;br /&gt;
** The pitch on channel 7 affects the hihat, cymbal and snare&lt;br /&gt;
** The pitch on channel 8 affects the hihat, cymbal and tomtom&lt;br /&gt;
* The modulator/carrier output level is used to set the volume of each instrument.&lt;br /&gt;
** channel 6 carrier controls the volume of the bass drum&lt;br /&gt;
** channel 7 modulator controls the volume of the hi-hat&lt;br /&gt;
** channel 7 carrier controls the volume of the snare&lt;br /&gt;
** channel 8 modulator controls the volume of the tomtom&lt;br /&gt;
** channel 8 carrier controls the volume of the cymbal&lt;br /&gt;
* Panning L/R bits set via register 0xC0 affect instruments as follows:&lt;br /&gt;
** channel 6 affects the bass drum&lt;br /&gt;
** channel 7 affects hi-hat and snare&lt;br /&gt;
** channel 8 affects cymbal and tomtom&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;AdLib Programmer&#039;s Manual&#039;&#039; contains playback code that uses the Tom-Tom frequency for all percussion instruments.  It is possible this is the source of the confusion.  Here, when a note is played on the Tom-Tom channel, that note will of course cause the Top Cymbal to change as well because of the shared channel.  But the code increases this pitch by seven semitones and sets that frequency for channel 7 at the same time, ensuring the Hi-Hat and Snare Drum are always set to seven semitones above the last Tom-Tom note.  (See [[AdLib MIDI Format]] for details.)&lt;br /&gt;
&lt;br /&gt;
This mode is identical with that of OPL2. For more details see ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
== Programming the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
OPL3 may be found at the following addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Sound Blaster Pro II || 220h or 240h (selectable), also 388h&lt;br /&gt;
|-&lt;br /&gt;
| Adlib Gold || 388h&lt;br /&gt;
|-&lt;br /&gt;
| Pro Audio Spectrum Plus/16 || ? (if you have a PAS you should know it)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The base address of the synthesizer will be called &amp;quot;base&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The chip occupies four I/O addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| base+0 || Primary index register (write), Status register (read)&lt;br /&gt;
|-&lt;br /&gt;
| base+1 || Primary data register (write-only)&lt;br /&gt;
|-&lt;br /&gt;
| base+2 || Secondary index register (write)&lt;br /&gt;
|-&lt;br /&gt;
| base+3 || Secondary data register (write-only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The index registers are used to select internal registers and data registers are used to write to them. Status register returns the state of two timers built in the chip.&lt;br /&gt;
&lt;br /&gt;
OPL3 contains two sets of registers. The Primary set maps to channels 0-8 (operators 0-17) and the secondary maps to channels 9-17 (operators 18-35). The reason for this is simple: all these registers wouldn&#039;t fit into single register set.&lt;br /&gt;
&lt;br /&gt;
Unlike Adlib (OPL2), OPL3 doesn&#039;t need delay between register writes. With OPL2 you had to wait 3.3 µs after index register write and another 23 µs after data register write. On the contrary OPL3 doesn&#039;t need (almost) any delay after index register write and only 0.28 µs after data register write. This means you can neglect the delays and slightly speed up your music driver. But using reasonable delays will certainly do no harm.&lt;br /&gt;
&lt;br /&gt;
The data registers can&#039;t be read (they are write-only) on both OPL2 and OPL3.&lt;br /&gt;
&lt;br /&gt;
== Register Map ==&lt;br /&gt;
&lt;br /&gt;
The registers are grouped in the same manner as in the OPL2 chip. Programs using both OPL2 and OPL3 chips may use the same code provided that their direct I/O interface is well written. The only thing you have to change is operator-to-register mapping, which must accomodate the fact that registers are spread between two register sets.&lt;br /&gt;
&lt;br /&gt;
(The register map is nearly the same so I dared to copy it from ADLIB.DOC.)&lt;br /&gt;
&lt;br /&gt;
=== Status Register (base+0) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
!    D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQFlag || T1Flag || T2Flag ||        ||        ||        ||        ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Data Registers (base+1, base+3) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! REG   !!   D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| 01    ||colspan=2| Test Register ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|(WSEnable)||colspan=5| Test Register&lt;br /&gt;
|-&lt;br /&gt;
| 02    ||colspan=8| Timer 1 Count (80 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 03    ||colspan=8| Timer 2 Count (320 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 04*   ||IRQReset|| T1Mask || T2Mask ||colspan=3|                  ||T2 Start||T1 Start&lt;br /&gt;
|-&lt;br /&gt;
| 04**  ||colspan=2|        ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP B-E||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP A-D||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 9-C||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 2-5||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 1-4||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 0-3&lt;br /&gt;
|-&lt;br /&gt;
| 05**  ||colspan=7|                                                           ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| OPL3&lt;br /&gt;
|-&lt;br /&gt;
| 08    ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| (CSW)  ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|NOTE-SEL||colspan=6|&lt;br /&gt;
|-&lt;br /&gt;
| 20-35 ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Tremolo ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Vibrato ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Sustain ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|  KSR   ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Frequency Multiplication Factor&lt;br /&gt;
|-&lt;br /&gt;
| 40-55 ||colspan=2 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Key Scale Level ||colspan=6 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 60-75 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Attack Rate ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 80-95 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Sustain Level ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A0-A8 ||colspan=8 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Frequency Number  (Lower 8 bits)&lt;br /&gt;
|-&lt;br /&gt;
| B0-B8 ||colspan=2|        ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| KEY-ON ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Block Number ||colspan=2 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| F-Num (hi bits)&lt;br /&gt;
|-&lt;br /&gt;
| BD    ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Trem Dep||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Vibr Dep||style=&amp;quot;background-color: #FFCCDD;&amp;quot;|PercMode||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| BD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| SD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| TT On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| CY On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| HH On&lt;br /&gt;
|-&lt;br /&gt;
| C0-C8 ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_D ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_C ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Right  ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Left   ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;|FeedBack Modulation Factor||style=&amp;quot;background-color: #FFE0CC;&amp;quot;|SynthTyp&lt;br /&gt;
|-&lt;br /&gt;
| E0-F5 ||colspan=5|                                      ||colspan=3 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;background-color: #CCFFCC;&amp;quot;| Chip-wide setting&lt;br /&gt;
|style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Per operator&lt;br /&gt;
|style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Per channel&lt;br /&gt;
|style=&amp;quot;background-color: #FFCCDD;&amp;quot;| Rhythm-mode only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; This applies only to port base+1&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; This applies only to port base+3&lt;br /&gt;
&lt;br /&gt;
For register bases A0, B0 and C0 there is one register per output channel. The primary register set holds the first nine channels (0-8) and the secondary holds last nine channels (9-17). For bases 20, 40, 60, 80 and E0 there are two registers per channel. Each register maps to one operator. Unfortunately the operator&#039;s register numbers are not continuous. The following table shows which operator maps to which register set and offset (in hex).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Op. !! Set/Offset !! Op. !! Set/Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0  || 0/00 || 18 || 1/00&lt;br /&gt;
|-&lt;br /&gt;
| 1  || 0/01 || 19 || 1/01&lt;br /&gt;
|-&lt;br /&gt;
| 2  || 0/02 || 20 || 1/02&lt;br /&gt;
|-&lt;br /&gt;
| 3  || 0/03 || 21 || 1/03&lt;br /&gt;
|-&lt;br /&gt;
| 4  || 0/04 || 22 || 1/04&lt;br /&gt;
|-&lt;br /&gt;
| 5  || 0/05 || 23 || 1/05&lt;br /&gt;
|-&lt;br /&gt;
| 6  || 0/08 || 24 || 1/08&lt;br /&gt;
|-&lt;br /&gt;
| 7  || 0/09 || 25 || 1/09&lt;br /&gt;
|-&lt;br /&gt;
| 8  || 0/0A || 26 || 1/0A&lt;br /&gt;
|-&lt;br /&gt;
| 9  || 0/0B || 27 || 1/0B&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 0/0C || 28 || 1/0C&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 0/0D || 29 || 1/0D&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 0/10 || 30 || 1/10&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 0/11 || 31 || 1/11&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 0/12 || 32 || 1/12&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0/13 || 33 || 1/13&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 0/14 || 34 || 1/14&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 0/15 || 35 || 1/15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following tables summarize which operators form a channel in various modes:&lt;br /&gt;
&lt;br /&gt;
1. Two-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel    !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 13 || 14 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 || 16 || 17 || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
2. Two-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 ||colspan=4| - || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
3. Four-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 13 || 14 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 || 16 || 17 || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=3| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=3| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channels 3, 4, 5 and 12, 13, 14 can&#039;t be used separately because their operators became part of channels 0, 1, 2 and 9, 10, 11 respectively. For instance a four-operator channel 1 consists of two two-operator channels number 1 and 4. (The second 2-OP channel number is always the first 2-OP channel number plus three.)&lt;br /&gt;
&lt;br /&gt;
OPL3 allows you to enable/disable 4-OP mode separately for any of channels 0, 1, 2, 9, 10 and 11 (see register 104h in the reference below). This means for instance when you switch only channel 2 into 4-OP mode, channels number 0, 1, 3, 4, 6, 7, 8, 9, etc. will be still independent 2-OP channels.&lt;br /&gt;
&lt;br /&gt;
Channels 6, 7, 8 and 15, 16, 17 are always two-operator ones. They can&#039;t be grouped to form four-operator channels.&lt;br /&gt;
&lt;br /&gt;
4. Four-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 ||colspan=4| - || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=5| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=5| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Two-operator channel #14 consists of operators 26 and 29 which occupy these registers (all are in the secondary register set):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 12A || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 12D || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 14A || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 14D || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 16A || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 16D || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18A || Operator 1 ||Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18D || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 1A5 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| 1B5 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| 1C5 ||            || FeedBack/Synthesis Type&lt;br /&gt;
|-&lt;br /&gt;
| 1EA || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| 1ED || Operator 2 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Four-operator channel #1 consists of operators 1, 4, 7 and 10. All registers except register 104h are in the primary set:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 104 || bit 1 = 1  || Enable Four-Operator Synthesis in channel #1&lt;br /&gt;
|-&lt;br /&gt;
| 21 || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 24 || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 29 || Operator 3 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 2C || Operator 4 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 41 || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 44 || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 49 || Operator 3 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 4C || Operator 4 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 61 || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 64 || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 69 || Operator 3 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 6C || Operator 4 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 81 || Operator 1 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 84 || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 89 || Operator 3 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 8C || Operator 4 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A1 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| A4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| B1 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| B4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| C1 ||            || FeedBack/Synthesis Type (part 1)&lt;br /&gt;
|-&lt;br /&gt;
| C4 ||            || Synthesis Type (part 2)&lt;br /&gt;
|-&lt;br /&gt;
| E1 || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E4 || Operator 2 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E9 || Operator 3 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| EC || Operator 4 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
NOTE: If a register number is greater than 100h, then it belongs into the secondary register set. (I use this numbering to emphasize the fact that the particular register MUST be written to the secondary set.) See the example code below for details.&lt;br /&gt;
&lt;br /&gt;
== OPL3 Register Reference ==&lt;br /&gt;
&lt;br /&gt;
Because the registers of OPL3 are almost the same as of OPL2, I have copied their descriptions from file ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
=== Status Register ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || T1 || T2 ||colspan=5| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ Flag. Set whenever any timer has elapsed.&lt;br /&gt;
* bit 6: Timer 1 Flag. Set every time the preset time in Timer 1 has elapsed.&lt;br /&gt;
* bit 5: Timer 2 Flag. Set every time the preset time in Timer 2 has elapsed.&lt;br /&gt;
&lt;br /&gt;
Timer interrupts are not wired to any IRQ (why??). The timers can be used to detect the OPL2/OPL3 chip (see Appendix B).&lt;br /&gt;
&lt;br /&gt;
=== Data Registers ===&lt;br /&gt;
&lt;br /&gt;
==== 01: Test Register / Waveform Select Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| Test Register&lt;br /&gt;
| (WSE)&lt;br /&gt;
|colspan=5| Test Register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 7-6: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
* bit 5: Waveform Select Enable. If clear, all channels will use normal sine wave. If set, register E0-F5 (Waveform Select) contents will be used.&lt;br /&gt;
* bits 0-4: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
&lt;br /&gt;
OPL3 does not implement WSE bit, and it should be left clear. In OPL2 mode all four waveforms are always available, and in OPL3 mode all eight waveforms are always available. For compatibility with OPL2, when a program is finished using an OPL3, the waveform select registers should be set to 0, if the next program assumes that by setting WSE bit to 0 the waveform is always sine like on a real OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 02: Timer 1 Count ====&lt;br /&gt;
&lt;br /&gt;
Upward 8 bit counter with a resolution of 80 µsec. If an overflow occurs, the status register bit is set, and the preset value is loaded into the timer again.&lt;br /&gt;
&lt;br /&gt;
==== 03: Timer 2 Count ====&lt;br /&gt;
&lt;br /&gt;
Same as Timer 1, but with a resolution of 320 µsec.&lt;br /&gt;
&lt;br /&gt;
==== 004 (port: base+1): IRQ-Reset / Mask / Start ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Rst&lt;br /&gt;
| T1M&lt;br /&gt;
| T2M&lt;br /&gt;
|colspan=3| -&lt;br /&gt;
| T2S&lt;br /&gt;
| T1S&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ-Reset. Resets timer and IRQ flags in status register. All other bits are ignored when this bit is set.&lt;br /&gt;
* bit 6: Timer 1 Mask. If 1, status register is not affected in overflow.&lt;br /&gt;
* bit 5: Timer 2 Mask. Same as above.&lt;br /&gt;
* bit 1: Timer 2 Start. Timer on/off.&lt;br /&gt;
* bit 0: Timer 1 Start. Same as above.&lt;br /&gt;
&lt;br /&gt;
==== 104 (port: base+3): Four-Operator Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| ChB&lt;br /&gt;
| ChA&lt;br /&gt;
| Ch9&lt;br /&gt;
| Ch2&lt;br /&gt;
| Ch1&lt;br /&gt;
| Ch0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 5: Enable four-operator synthesis for channel pair 11 - 14 (decimal).&lt;br /&gt;
* bit 4: Same as above for channel pair 10 - 13.&lt;br /&gt;
* bit 3: Same as above for channel pair 9 - 12.&lt;br /&gt;
* bit 2: Same as above for channel pair 2 - 5.&lt;br /&gt;
* bit 1: Same as above for channel pair 1 - 4.&lt;br /&gt;
* bit 0: Same as above for channel pair 0 - 3.&lt;br /&gt;
&lt;br /&gt;
If reset to zero, OPL3 can produce 18 two-operator sounds at a time. If nonzero, OPL3 produces four-operator sound in appropriate channel pair.&lt;br /&gt;
&lt;br /&gt;
==== 105 (port: base+3): OPL3 Mode Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=7| -&lt;br /&gt;
| OPL3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 0: OPL3 Mode Enable. When set, OPL3 extensions (36 operators, 4-OP synthesis, 8 waveforms, stereo output) can be used. When reset, the chip behaves as an ordinary OPL2. This bit is zero by default for compatibility with OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 08: CSW / NOTE-SEL ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| (CSW)&lt;br /&gt;
| N-S&lt;br /&gt;
|colspan=6| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: Composite sine wave mode on/off. All KEY-ON bits must be clear in order to use this mode. The card is unable to create any other sound when in CSW mode. (Unfortunately, I have no info how to use this mode :-&amp;lt; ). The CSW mode is not implemented on an OPL3 and this bit is ignored.&lt;br /&gt;
* bit 6: NOTE-SEL. Controls the split point of the keyboard. When 0, the keyboard split is the second bit from the bit 8 of the F-Number. When 1, the MSb of the F-Number is used. (???)&lt;br /&gt;
&lt;br /&gt;
The Note Select bit defines what kind of F-NUM values are used within an octave so the chip knows how to split an octave into two parts. When Note Select bit is 0, F-NUM values used within an octave all have their MSB bit (bit 9) set, ranging from 0x200 to 0x3FF, so the second most significant bit, bit 8 is used to determine if currently playing note belongs to lower (0x200-0x2FF) or upper (0x300-0x3FF) half within an octave. When Note Select bit is 1, the F-NUM value MSB bit, bit 9, is used to determine if the note belongs to lower (0x000-0x1FF) or upper (0x200-0x3FF) half within an octave.&lt;br /&gt;
&lt;br /&gt;
==== 20-35: Tremolo / Vibrato / Sustain / KSR / Frequency Multiplication Factor ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Sus&lt;br /&gt;
| KSR&lt;br /&gt;
|colspan=4| Multiplication&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude vibrato) on/off.&lt;br /&gt;
* bit 6:    Frequency vibrato on/off.&lt;br /&gt;
* bit 5:    Sound Sustaining. When 1, operator&#039;s output level will be held at its sustain level until a KEY-OFF is done.&lt;br /&gt;
* bit 4:    Envelope scaling (KSR) on/off. When 1, higher notes are shorter than lower notes.&lt;br /&gt;
* bits 0-3: Frequency Multiplication Factor (MULTI). Operator&#039;s frequency is set to (see registers A0, B0) F-Number * Factor.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! MULTI !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 40-55: Key Scale Level / Output Level ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| KSL&lt;br /&gt;
|colspan=6| Output level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 6-7: Key Scale Level. Attenuates output level towards higher pitch:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! KSL !! Attenuation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || -&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.0 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1.5 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 6.0 dB/oct&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The attenuation level is based on the 3-bit octave (block number) value and top four bits of the FNUM value, so each octave is subdivided into 16 parts.&lt;br /&gt;
&lt;br /&gt;
* bits 0-5: Output Level. Attenuates the operator output level. 0 is the loudest, 3F is the softest. Attenuation range is 48dB with 0.75dB resolution.&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| 24dB || 12dB || 6dB || 3dB || 1.5dB || 0.75dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In additive synthesis, varying the output level of any operator varies the volume of its corresponding channel. In FM synthesis, varying the output level of the carrier varies the volume of the channel. Varying the output of the modulator will change the frequency spectrum produced by the carrier. The following table summarizes which operators&#039; output levels should be updated when trying to change channel output level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Mode !! Op 1 !! Op 2 !! Op 3 !! Op 4&lt;br /&gt;
|-&lt;br /&gt;
| AM    || Y || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM    || - || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM-FM || - || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-FM || Y || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| FM-AM || - || Y || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-AM || Y || - || Y   || Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 60-75: Attack Rate / Decay Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Attack rate&lt;br /&gt;
|colspan=4| Decay rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Attack Rate. Determines the rising time for the sound. The higher the value, the faster the attack. If value is 0, the sound will never attack, and if value is 15, the volume jumps directly from minimum to maximum.&lt;br /&gt;
* bits 0-3: Decay Rate. Determines the diminishing time for the sound. The higher the value, the shorter the decay. If value is 0, the sound does not decay towards sustain level and stays at maximum volume after attack.&lt;br /&gt;
&lt;br /&gt;
==== 80-95: Sustain Level / Release Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Sustain level&lt;br /&gt;
|colspan=4| Release rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Sustain Level. Determines the point at which the sound ceases to decay and chages to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. 15 is the softest and 0 is the loudest sustain level. Note that the Sustain-bit in the register 20-35 must be set for this to have an effect. Otherwise the sound will continue with release phase after hitting sustain level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! SL3 !! SL2 !! SL1 !! SL0&lt;br /&gt;
|-&lt;br /&gt;
| -24dB || -12dB || -6dB || -3dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is an exception when all bits are set (value=15), the actual level is -93dB instead, matching as if the value were 31.&lt;br /&gt;
&lt;br /&gt;
* bits 0-3: Release Rate. Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. Value of 0 causes the sound not to release at all, it will continue to produce sound at level before KEY-OFF.&lt;br /&gt;
&lt;br /&gt;
Some songs (e.g. &amp;lt;tt&amp;gt;LAME intro tune for Xerox of INC.raw&amp;lt;/tt&amp;gt;) set the sustain and release values to the shortest (0xFF) while the note is still playing in order to immediately silence a note that would otherwise linger after keyoff.&lt;br /&gt;
&lt;br /&gt;
==== A0-A8: Frequency Number ====&lt;br /&gt;
&lt;br /&gt;
Determines the pitch of the note. Highest bits of F-Number are stored in the register below.&lt;br /&gt;
&lt;br /&gt;
==== B0-B8: Key On / Block Number / F-Number(hi bits) ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| Note on&lt;br /&gt;
|colspan=3| Block number&lt;br /&gt;
|colspan=2| Frequency num.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;note on&#039;&#039;&#039; bit is set to 1 to play a note on the channel, and 0 to silence the note.  Setting this value to 1 when a note is already playing has no effect (it does not retrigger the note.)&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block number&#039;&#039;&#039; is often referred to as the octave, but this is a misleading description.  The value of the block controls the frequency range spanned by the frequency numbers.  A larger block allows higher frequencies (pitch) to be reached, at the expense of there being a greater difference in pitch of two adjacent frequency numbers.  This works out well, since a low block number allows a very high pitch accuracy for deep notes where it is most noticeable, while high block numbers mean the coarse pitch settings need only be used at high frequencies where the coarseness is unnoticeable.&lt;br /&gt;
&lt;br /&gt;
The following table illustrates the effect of different block numbers.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2| Block !!colspan=2| Note frequency !!rowspan=2| Difference between&amp;lt;br/&amp;gt;adjacent notes (Hz)&lt;br /&gt;
|-&lt;br /&gt;
! F-num=1 !! F-num=1023&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 0 ||align=right| 0.047 Hz ||align=right| 48.503 Hz ||align=right| 0.048 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 1 ||align=right| 0.094 Hz ||align=right| 97.006 Hz ||align=right| 0.095 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 2 ||align=right| 0.189 Hz ||align=right| 194.013 Hz ||align=right| 0.190 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 3 ||align=right| 0.379 Hz ||align=right| 388.026 Hz ||align=right| 0.379 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 4 ||align=right| 0.758 Hz ||align=right| 776.053 Hz ||align=right| 0.759 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 5 ||align=right| 1.517 Hz ||align=right| 1,552.107 Hz ||align=right| 1.517 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 6 ||align=right| 3.034 Hz ||align=right| 3,104.215 Hz ||align=right| 3.034 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 7 ||align=right| 6.068 Hz ||align=right| 6,208.431 Hz ||align=right| 6.069 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This shows that block 7 is capable of reaching the highest note (6.2kHz) but since there are 6Hz between notes the accuracy suffers.  Note A-4 is 440Hz but in this block, the two closest frequency numbers are 72 and 73, which create tones at 437Hz and 443Hz respectively, neither of which is particularly accurate.  Blocks 3 and below are unable to reach as high as 440Hz, but block 4 can.  With block 4, frequency numbers 579 and 580 produce 439.4Hz and 440.2Hz, considerably closer to the intended frequency.&lt;br /&gt;
&lt;br /&gt;
In other words, when calculating notes, the best accuracy is achieved by selecting the lowest possible block number that can reach the desired note frequency.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;frequency number&#039;&#039;&#039; is split between registers A0 and B0, with the upper two bits being stored here.  The full frequency number is a value between 0 and 1023 inclusive.  The following formula is used to determine the frequency number for a given note frequency (in Hertz) and block:&lt;br /&gt;
&lt;br /&gt;
: f-num = freq * 2^(20 - block) / 49716&lt;br /&gt;
&lt;br /&gt;
This formula can produce frequency numbers outside of the allowed 0-1023 range if the block number is too low, or the frequency is higher than the hardware can produce.&lt;br /&gt;
&lt;br /&gt;
The sampling frequency of OPL2 and OPL3 chips is approximately 49716 Hz, leading to the constant in the formula.  Occasionally this is rounded to 50000 leading to a small pitch variation if the wrong constant is used to play these songs.  OPL2 cards like Adlib and early Sound Blasters used the 14.31818 MHz oscillator signal from ISA bus slot and divided it by four on card, thus running the OPL2 chip at 3.579545 MHz, which gets divided internally by 72 to get the sampling rate. OPL3 cards had to be compatible, and mostly the sound cards have separate 14.31818 MHz oscillator on board which the OPL3 uses directly, and this gets divided internally by 288 to get the sampling rate.&lt;br /&gt;
&lt;br /&gt;
NOTE: In four-operator mode only the register value of Operators 1 and 2 is used, value of Operators 3 and 4 in this register is ignored. In other words: one channel uses only one frequency, block and KEY-ON value at a time, regardless whether it is a two- or four-operator channel.&lt;br /&gt;
&lt;br /&gt;
Setting the frequency and/or block while the &#039;&#039;note on&#039;&#039; bit is set will result in the frequency changing immediately.  By changing the values gradually, pitch bends can be achieved.&lt;br /&gt;
&lt;br /&gt;
{{TODO|Does changing the frequency just after a note-off cause a pitch bend for those instruments with lengthy release rates?}}&lt;br /&gt;
&lt;br /&gt;
==== BD: Tremolo Depth / Vibrato Depth / Percussion Mode / BD/SD/TT/CY/HH On ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Per&lt;br /&gt;
| BD&lt;br /&gt;
| SD&lt;br /&gt;
| TT&lt;br /&gt;
| CY&lt;br /&gt;
| HH&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude Vibrato) Depth. 0 = 1.0dB, 1 = 4.8dB.&lt;br /&gt;
* bit 6:    Frequency Vibrato Depth. 0 = 7 cents, 1 = 14 cents. A &amp;quot;cent&amp;quot; is 1/100 of a semi-tone.&lt;br /&gt;
* bit 5:    Percussion Mode. 0 = Melodic Mode, 1 = Percussion Mode.&lt;br /&gt;
* bit 4:    BD On. KEY-ON of the Bass Drum channel.&lt;br /&gt;
* bit 3:    SD On. KEY-ON of the Snare Drum channel.&lt;br /&gt;
* bit 2:    TT On. KEY-ON of the Tom-Tom channel.&lt;br /&gt;
* bit 1:    CY On. KEY-ON of the Cymbal channel.&lt;br /&gt;
* bit 0:    HH On. KEY-ON of the Hi-Hat channel.&lt;br /&gt;
&lt;br /&gt;
NOTE: KEY-ON bits of channels 6, 7 and 8 must be clear and their F-Nums, Attack/Decay/Release rates, etc. must be set properly to use percussion mode.&lt;br /&gt;
&lt;br /&gt;
==== C0-C8: FeedBack Modulation Factor / Synthesis Type ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| OutCh_D&lt;br /&gt;
| OutCh_C&lt;br /&gt;
| R&lt;br /&gt;
| L&lt;br /&gt;
|colspan=3| Feedback&lt;br /&gt;
| Syn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: CHD, Output Channel D Enable. When set, channel output goes to fourth digital audio output channel.&lt;br /&gt;
* bit 6: CHC, Output Channel C Enable. When set, channel output goes to third digital audio output channel.&lt;br /&gt;
* bit 5:    Right Speaker Enable. When set, channel output goes to second digital audio output channel, connected to right speaker.&lt;br /&gt;
* bit 4:    Left Speaker Enable. When set, channel output goes to first digital audio output channel, connected to left speaker.&lt;br /&gt;
** In OPL3 mode, at least one of the left/right bits must be set to hear the channel.&lt;br /&gt;
** In OPL2 mode, these bits are ignored and audio is sent to all channels for compatibility reasons.&lt;br /&gt;
** Left/Right bits can be used to realize sound &amp;quot;panning&amp;quot;, but this method offers only three pan positions (left/center/right).&lt;br /&gt;
** These bits apply only to operators producing sound (Carriers). Modulators are not affected by their setting.&lt;br /&gt;
** Sound cards use only one stereo DAC, so only two of the four digital output channels are available.&lt;br /&gt;
* bits 1-3: FeedBack Modulation Factor. If 0, no feedback is present. If 1-7, operator 1 will send a portion of its output back into itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! FeedBack !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;amp;pi;/16&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;amp;pi;/8&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;amp;pi;/4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;amp;pi;/2&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 2&amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 4&amp;amp;pi;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When in four-operator mode, the FeedBack value is used only by Operator 1, value of Operators 2, 3 and 4 is ignored.&lt;br /&gt;
&lt;br /&gt;
* bit 0: Synthesis Type. 1 = Additive synthesis, 0 = Frequency Modulation.  In four-operator mode, there are two bits controlling the synthesis type. Both are the bit 0 of register C0, one of Operators 1 and 2 and the second of Operators 3 and 4.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Op 1&amp;amp;2 !! Op 3&amp;amp;4 !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0 || NONE || FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NONE || AM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || FM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || AM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || FM-AM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || AM-AM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== E0-F5: Waveform Select ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5| -&lt;br /&gt;
|colspan=3| Waveform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 0-2: WaveForm Select (WS): &amp;lt;gallery widths=261px perrow=4&amp;gt;&lt;br /&gt;
Image:OPL_Wave0_Digital.svg|Waveform 0: Sine&lt;br /&gt;
Image:OPL_Wave1_Digital.svg|Waveform 1: Half-sine&lt;br /&gt;
Image:OPL_Wave2_Digital.svg|Waveform 2: Abs-sine&lt;br /&gt;
Image:OPL_Wave3_Digital.svg|Waveform 3: Pulse-sine&lt;br /&gt;
Image:OPL_Wave4_Digital.svg|Waveform 4: Sine - even periods only&lt;br /&gt;
Image:OPL_Wave5_Digital.svg|Waveform 5: Abs-sine - even periods only&lt;br /&gt;
Image:OPL_Wave6_Digital.svg|Waveform 6: Square&lt;br /&gt;
Image:OPL_Wave7_Digital.svg|Waveform 7: Derived square&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOTE: Bit 5 of register 01 must be set to use waveforms other than sine. Waveforms 4-7 are available only on OPL3. See files WAVEn.GIF for real waveforms, where n is a number between 0 and 7.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
These examples show a few working routines used in my MUS Player. They are written in Borland C++ 3.1 but should be easy to translate to any other language.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
// I prefer using these Assembler-like types&lt;br /&gt;
typedef unsigned int  WORD;&lt;br /&gt;
typedef unsigned char BYTE;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * FM Synthesizer base port. SB Pro II - 0x220, Adlib 0x388&lt;br /&gt;
 */&lt;br /&gt;
WORD FMport = 0x220;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Enables OPL3 extensions.&lt;br /&gt;
 */&lt;br /&gt;
WORD OPL3 = 1;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Direct write to any Adlib/SB Pro II FM synthetiser register.&lt;br /&gt;
 *   reg - register number (range 0x001-0x0F5 and 0x101-0x1F5). When high byte&lt;br /&gt;
 *         of reg is zero, data go to port FMport, otherwise to FMport+2&lt;br /&gt;
 *   data - register value to be written&lt;br /&gt;
 */&lt;br /&gt;
BYTE FMwriteReg(WORD reg, BYTE data)&lt;br /&gt;
{&lt;br /&gt;
    asm {&lt;br /&gt;
	mov	dx,FMport&lt;br /&gt;
	mov	ax,reg&lt;br /&gt;
	or	ah,ah		// high byte is nonzero -- write to port base+2&lt;br /&gt;
	jz	out1&lt;br /&gt;
	inc	dx&lt;br /&gt;
	inc	dx&lt;br /&gt;
    }&lt;br /&gt;
out1: asm {&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	mov	cx,6&lt;br /&gt;
    }&lt;br /&gt;
loop1:asm {			// delay between writes&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop1&lt;br /&gt;
&lt;br /&gt;
	inc	dx&lt;br /&gt;
	mov	al,data&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	dec	dx&lt;br /&gt;
	mov	cx,36&lt;br /&gt;
    }&lt;br /&gt;
loop2:asm {			// delay after data write&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop2&lt;br /&gt;
    }&lt;br /&gt;
    return _AL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to an operator pair. To be used for register bases of 0x20, 0x40,&lt;br /&gt;
 * 0x60, 0x80 and 0xE0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteChannel(BYTE regbase, BYTE channel, BYTE data1, BYTE data2)&lt;br /&gt;
{&lt;br /&gt;
    static BYTE adlib_op[] = {0, 1, 2, 8, 9, 10, 16, 17, 18};&lt;br /&gt;
    static BYTE sbpro_op[] = { 0,  1,  2,   6,  7,  8,  12, 13, 14,&lt;br /&gt;
			      18, 19, 20,  24, 25, 26,  30, 31, 32};&lt;br /&gt;
    static WORD rg[] = {0x000,0x001,0x002,0x003,0x004,0x005,&lt;br /&gt;
			0x008,0x009,0x00A,0x00B,0x00C,0x00D,&lt;br /&gt;
			0x010,0x011,0x012,0x013,0x014,0x015,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,&lt;br /&gt;
			0x108,0x109,0x10A,0x10B,0x10C,0x10D,&lt;br /&gt;
			0x110,0x111,0x112,0x113,0x114,0x115};&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
    {&lt;br /&gt;
	register WORD reg = sbpro_op[channel];&lt;br /&gt;
	FMwriteReg(rg[reg]+regbase, data1);&lt;br /&gt;
	FMwriteReg(rg[reg+3]+regbase, data2);&lt;br /&gt;
    } else {&lt;br /&gt;
	register WORD reg = regbase+adlib_op[channel];&lt;br /&gt;
	FMwriteReg(reg, data1);&lt;br /&gt;
	FMwriteReg(reg+3, data2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to channel a single value. To be used for register bases of&lt;br /&gt;
 * 0xA0, 0xB0 and 0xC0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteValue(BYTE regbase, BYTE channel, BYTE value)&lt;br /&gt;
{&lt;br /&gt;
    static WORD ch[] = {0x000,0x001,0x002,0x003,0x004,0x005,0x006,0x007,0x008,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,0x106,0x107,0x108};&lt;br /&gt;
    register WORD chan;&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
	chan = ch[channel];&lt;br /&gt;
    else&lt;br /&gt;
	chan = channel;&lt;br /&gt;
    FMwriteReg(regbase + chan, value);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Detection Methods ==&lt;br /&gt;
&lt;br /&gt;
An official method of Adlib (OPL2) detection is:&lt;br /&gt;
&lt;br /&gt;
# Reset Timer 1 and Timer 2: write 60h to register 4.&lt;br /&gt;
# Reset the IRQ: write 80h to register 4.&lt;br /&gt;
#* NOTE: Steps 1 and 2 can&#039;t be combined together.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Set Timer 1 to FFh: write FFh to register 2.&lt;br /&gt;
# Unmask and start Timer 1: write 21h to register 4.&lt;br /&gt;
# Wait in a delay loop for at least 80 µsec.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Reset Timer 1, Timer 2 and IRQ as in steps 1 and 2.&lt;br /&gt;
# Test the results of the two reads: the first should be 0, the second should be C0h. If either is incorrect, then the OPL2 is not present.&lt;br /&gt;
&lt;br /&gt;
* NOTE1: You should AND the result bytes with E0h because the unused bits are undefined.&lt;br /&gt;
* NOTE2: This testing method doesn&#039;t work in some SoundBlaster compatible cards.&lt;br /&gt;
&lt;br /&gt;
=== OPL3 Detection ===&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
# Detect OPL2. If present, continue.&lt;br /&gt;
# Read status register: read port base+0.&lt;br /&gt;
# AND the result with 06h.&lt;br /&gt;
# If the result is zero, you have OPL3, otherwise OPL2.&lt;br /&gt;
&lt;br /&gt;
* NOTE: This is NOT an official method. I have dug it out of a sound driver. I haven&#039;t tested it, because I haven&#039;t an OPL2 card (Adlib, SB Pro I). Nevertheless it &amp;quot;detects&amp;quot; my SB Pro II properly. ;-)&lt;br /&gt;
&lt;br /&gt;
Another possible detection method for distinguishing between SB Pro I and SB Pro II would be to try to detect OPL2 at I/O port base+0 and then at port base+2. The first test should succeed and the second should fail if OPL3 is present. (Remember: SB Pro I contains twin OPL2 chips at addresses base+0 and base+2, while SB Pro II contains one OPL3 chip at I/O address base+0 thru base+3).&lt;br /&gt;
&lt;br /&gt;
== BLASTER Environment Variable ==&lt;br /&gt;
&lt;br /&gt;
Perhaps the most recommended &amp;quot;detection&amp;quot; method. Reading this variable avoids blindfold I/O port scanning and possible device conflicts. The user is responsible for its proper setting.&lt;br /&gt;
&lt;br /&gt;
The variable has this format:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=Aaddr Iirq Ddma Ttype&lt;br /&gt;
&lt;br /&gt;
* A: Base I/O address given in hex. For most Sound Blasters the default is 220.&lt;br /&gt;
* I: IRQ Number (decimal). Default 7.&lt;br /&gt;
* D: DMA Number (decimal). Default 1.&lt;br /&gt;
* T: Card Type (decimal):&lt;br /&gt;
** 1 - Sound Blaster 1.5&lt;br /&gt;
** 2 - Sound Blaster Pro I&lt;br /&gt;
** 3 - Sound Blaster 2.0&lt;br /&gt;
** 4 - Sound Blaster Pro II&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=A220 I7 D1 T4&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The PC Games Programmers Encyclopedia&#039;&#039;, Mark Feldman and many others on Usenet and Internet, http://bespin.org/~qz/pc-gpe/&lt;br /&gt;
: ... you can find (almost) everything you need there&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sound Blaster - The Official Book&#039;&#039;, Richard Heimlich, David M. Golden, Ivan Luk, Peter M. Ridge, Osborne/McGraw Hill, ISBN 0-07-881907-5&lt;br /&gt;
: ... this is a number-one in my book-wishlist. If anyone wanted to get rid of the book, I wouldn&#039;t scorn it ... :-)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The SoundBlaster Developer Kit&#039;&#039;, Creative Labs Inc, Creative Technology PTE LTD&lt;br /&gt;
: ... I wonder if you can find something comprehensible in that.&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=SoftMax_Resource_File_Format&amp;diff=6800</id>
		<title>SoftMax Resource File Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=SoftMax_Resource_File_Format&amp;diff=6800"/>
		<updated>2016-03-05T12:09:17Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: fix copy-paste errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Archive Infobox&lt;br /&gt;
 | MaxFiles = Set by FAT length&lt;br /&gt;
 | FAT = External&lt;br /&gt;
 | Names = N&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Subdirectories = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Encrypted = N&lt;br /&gt;
 | Hidden = N&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Sky &amp;amp; Rica}}&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;SoftMax Resource File Format&#039;&#039;&#039; is used by games of the Korean developer Softmax.&lt;br /&gt;
The format itself stores no offsets and/or file names. Instead, potential file tables are stored in the game EXE files or are even calculated using formulas.&lt;br /&gt;
&lt;br /&gt;
The format is very similar to [[ArtCraft Resource File Format]], which is used in the earlier released game [[Lychnis]].&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
=== Signature ===&lt;br /&gt;
&lt;br /&gt;
Sky &amp;amp; Rica uses the following signature:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type!!Name!!Description&lt;br /&gt;
|-&lt;br /&gt;
|BYTE[0x20]||cSignature||&amp;quot;(C) SoftMax Resource File&amp;quot; 0x1A 0x00*6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== FAT ===&lt;br /&gt;
The File Allocation Table, if available, is stored in the game executables.&lt;br /&gt;
&lt;br /&gt;
[[Sky &amp;amp; Rica]] (unlike Lychnis) stores only very few information about the resource files. For most of the files, there is only a list of UINT32LE file offsets. For the sound effects, there is an additional UINT32LE list of file sizes. For some files, offsets are calculated by the game.&lt;br /&gt;
S&amp;amp;R.EXE and SETUP.EXE don&#039;t use resource files.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!EXE File!!Resource file!!Number of files!!File offsets!!File sizes!!File type&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot;|FRAME.EXE ||s&amp;amp;r4.res||135*||0x011A84||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r1.res|| 10*||0x01242C||   --   ||Cutscene Data?&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r2.res|| 10*||0x012454||   --   ||Cutscene Data?&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 44*||0x012700||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 33 ||0x012806||0x01288A||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE1.EXE||s&amp;amp;r4.res||120 ||0x012F9C||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 42 ||0x013DAA||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013EA8||0x013F34||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE2.EXE||s&amp;amp;r4.res||132 ||0x01305C||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x013E6A||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013FBC||0x014048||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE3.EXE||s&amp;amp;r4.res||120 ||0x012224||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 42 ||0x013028||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013126||0x0131B2||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE4.EXE||s&amp;amp;r4.res||120 ||0x013994||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x0147D2||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x014924||0x0149B0||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE5.EXE||s&amp;amp;r4.res||133 ||0x0138C4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x0146D8||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x01482A||0x0148B6||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE6.EXE||s&amp;amp;r4.res||120 ||0x0121B4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 44*||0x012FCC||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x0130CA||0x013156||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE7.EXE||s&amp;amp;r4.res||120 ||0x013754||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x014558||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x0146AA||0x014736||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE9.EXE||s&amp;amp;r4.res||134 ||0x011CE4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x012AFA||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x012C4C||0x012CD8||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|TITLE.EXE ||s&amp;amp;r4.res||120 ||0x0088A6||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x008F2A||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x00907C||0x009108||Sound Effects&lt;br /&gt;
|}&lt;br /&gt;
It should be noted that not all executables have full file tables. For example, &amp;lt;tt&amp;gt;TITLE.EXE&amp;lt;/tt&amp;gt; doesn&#039;t have all music offsets, but the SFX list is complete. &amp;lt;tt&amp;gt;FRAME.EXE&amp;lt;/tt&amp;gt; has all music offsets, but lacks one sound effect.&lt;br /&gt;
All complete tables are marked with a *.&lt;br /&gt;
&lt;br /&gt;
Sound Effects are raw 8-bit unsigned PCM. Music consists of IMS and BNK files.&lt;br /&gt;
&lt;br /&gt;
== List of files ==&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R1.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||887935||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x0D8C9F||333482||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x12A349||27524||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x130ECD||22472||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x136695||402640||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x198B65||137224||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x1BA36D||296062||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x2027EB||126749||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x221708||183262||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x24E2E6||143358||unknown||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R2.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||204805||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x032025||665605||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x0D482A||65413||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x0E47AF||422061||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x14B85C||363058||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x1A428E||237377||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x1DE1CF||446701||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x24B2BC||447507||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x2B86CF||66560||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x2C8ACF||189980||unknown||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R3.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||6752||Map Data||Title Screen&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001A80||16128||Map Data||Stage 1&lt;br /&gt;
|-&lt;br /&gt;
|2||0x005980||16128||Map Data||Stage 2&lt;br /&gt;
|-&lt;br /&gt;
|3||0x009880||14528||Map Data||Stage 3&lt;br /&gt;
|-&lt;br /&gt;
|4||0x00D140||16128||Map Data||Stage 4&lt;br /&gt;
|-&lt;br /&gt;
|5||0x011040||16128||Map Data||Stage 5&lt;br /&gt;
|-&lt;br /&gt;
|6||0x014F40||16128||Map Data||Stage 6&lt;br /&gt;
|-&lt;br /&gt;
|7||0x018E40||14368||Map Data||Stage 7&lt;br /&gt;
|-&lt;br /&gt;
|8||0x01C660||75904||Tile Data||Title Screen&lt;br /&gt;
|-&lt;br /&gt;
|9||0x02EEE0||216192||Tile Data||Stage 1&lt;br /&gt;
|-&lt;br /&gt;
|10||0x063B60||252032||Tile Data||Stage 2&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0A13E0||400768||Tile Data||Stage 3&lt;br /&gt;
|-&lt;br /&gt;
|12||0x103160||232064||Tile Data||Stage 4&lt;br /&gt;
|-&lt;br /&gt;
|13||0x13BBE0||173440||Tile Data||Stage 5&lt;br /&gt;
|-&lt;br /&gt;
|14||0x166160||236928||Tile Data||Stage 6&lt;br /&gt;
|-&lt;br /&gt;
|15||0x19FEE0||330368||Tile Data||Stage 7&lt;br /&gt;
|-&lt;br /&gt;
|16||0x1F0960||16896||Map Data||Stage 9&lt;br /&gt;
|-&lt;br /&gt;
|17||0x1F4B60||252032||Tile Data||Stage 9&lt;br /&gt;
|}&lt;br /&gt;
Since all of the offsets are hardcoded into the game executables, I searched for magic bytes.&lt;br /&gt;
Those were &amp;quot;Map File&amp;quot; and &amp;quot;Tile File&amp;quot; for map and tile data respectively. Both file types also contain the string &amp;quot;Innovation! 1994&amp;quot;.&lt;br /&gt;
In the &amp;lt;tt&amp;gt;STAGE#.EXE&amp;lt;/tt&amp;gt; files the offsets can be located by searching for the following magic bytes:&amp;lt;br/&amp;gt;&lt;br /&gt;
Map Data (4-byte offset): &amp;lt;tt&amp;gt;F8 89 46 F6 6A 00 66 68 xx xx xx xx&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Map Data (1-byte offset): &amp;lt;tt&amp;gt;F8 89 46 F6 6A 00 66 6A xx&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Tile Data (4-byte offset): &amp;lt;tt&amp;gt;FA 89 46 F8 6A 00 66 68 xx xx xx xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R4.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||11367||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x002C87||9268||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x0050BB||34823||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x00D8C2||25280||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x013B82||7640||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x01595A||14302||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x019138||28980||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x02026C||14448||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x023ADC||4435||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x024C2F||13515||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0280FA||10548||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x02AA2E||13956||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x02E0B2||5752||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x02F72A||10245||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x031F2F||3846||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x032E35||16144||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x036D45||11848||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x039B8D||7194||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x03B7A7||8642||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x03D969||13390||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x040DB7||12972||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x044063||6822||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x045B09||7216||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x047739||15168||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x04B279||40454||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x05507F||10136||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x057817||7347||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x0594CA||7566||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x05B258||5436||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x05C794||8796||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x05E9F0||9283||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x060E33||3717||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x061CB8||11706||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x064A72||13298||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x067E64||11108||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x06A9C8||3417||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x06B721||39070||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x074FBF||5588||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x076593||8923||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x07886E||5450||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x079DB8||11653||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x07CB3D||53464||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x089C15||11620||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x08C979||6494||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x08E2D7||3146||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x08EF21||20656||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x093FD1||1922||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x094753||17723||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x098C8E||8592||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x09AE1E||5013||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x09C1B3||34029||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x0A46A0||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x0AAE8D||4276||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x0ABF41||35885||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x0B4B6E||47021||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x0C031B||7005||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x0C1E78||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x0C8665||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x0CEE52||34029||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x0D733F||1958||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x0D7AE5||3584||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x0D88E5||2789||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x0D93CA||7121||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0DAF9B||13715||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x0DE52E||21591||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x0E3985||9948||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0E6061||7054||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x0E7BEF||4680||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x0E8E37||3378||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x0E9B69||5103||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x0EAF58||6835||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0ECA0B||9360||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x0EEE9B||172253||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x118F78||147305||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x13CEE1||19053||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x14194E||1787||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x142049||1513||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x142632||4962||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x143994||10437||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|79||0x146259||6622||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|80||0x147C37||3464||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|81||0x1489BF||4085||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|82||0x1499B4||27629||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|83||0x1505A1||19785||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|84||0x1552EA||4164||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|85||0x15632E||17084||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|86||0x15A5EA||13467||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|87||0x15DA85||7184||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|88||0x15F695||44831||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|89||0x16A5B4||8968||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|90||0x16C8BC||63467||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|91||0x17C0A7||8856||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|92||0x17E33F||6715||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|93||0x17FD7A||4050||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|94||0x180D4C||1355||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|95||0x181297||12398||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|96||0x184305||16593||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|97||0x1883D6||108061||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|98||0x1A29F3||3604||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|99||0x1A3807||33899||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|100||0x1ABC72||16701||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|101||0x1AFDAF||63112||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|102||0x1BF437||9400||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|103||0x1C18EF||4269||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|104||0x1C299C||6613||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|105||0x1C4371||44437||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|106||0x1CF106||3259||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|107||0x1CFDC1||7243||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|108||0x1D1A0C||11166||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|109||0x1D45AA||48331||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|110||0x1E0275||3010||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|111||0x1E0E37||83755||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|112||0x1F5562||10248||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|113||0x1F7D6A||3729||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|114||0x1F8BFB||7018||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|115||0x1FA765||14275||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|116||0x1FDF28||3192||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|117||0x1FEBA0||8064||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|118||0x200B20||7931||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|119||0x202A1B||6108||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|120||0x2041F7||18091||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|121||0x2088A2||118034||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|122||0x2255B4||31292||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|123||0x22CFF0||1484||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|124||0x22D5BC||4637||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|125||0x22E7D9||7771||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|126||0x230634||3980||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|127||0x2315C0||27329||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|128||0x238081||11086||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|129||0x23ABCF||4631||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|130||0x23BDE6||1417||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|131||0x23C36F||16593||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|132||0x240440||33899||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|133||0x2488AB||39938||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|134||0x2524AD||8222||Sprite Data||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R5.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||4609||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001221||4609||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002422||7759||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x004271||7759||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x0060C0||3735||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x006F57||11387||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x009BD2||6244||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x00B436||12243||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x00E409||7532||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x010175||14259||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x013928||6203||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x015163||19699||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x019E56||42261||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x02436B||6169||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x025B84||4318||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x026C62||3702||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x027AD8||7944||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x0299E0||2167||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x02A257||3006||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x02AE15||4667||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x02C050||7901||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x02DF2D||5982||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x02F68B||9396||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x031B3F||156577||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x057EE0||2715||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x05897B||2608||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x0593AB||3480||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x05A143||6480||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x05BA93||9771||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x05E0BE||2284||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x05E9AA||1435||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x05EF45||39331||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x0688E8||2177||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x069169||12701||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x06C306||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x06C862||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x06CDBE||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x06D31A||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x06D876||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x06DDD2||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x06E32E||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x06E88A||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x06EDE6||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x06F342||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x06F89E||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x06FDFA||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x070356||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x0708B2||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x070E0E||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x07136A||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x0718C6||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x071E22||14491||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x0756BD||2179||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x075F40||2416||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x0768B0||438||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x076A66||2836||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x07757A||9280||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x0799BA||4833||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x07AC9B||4013||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x07BC48||651||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x07BED3||9877||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x07E568||5364||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x07FA5C||6790||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0814E2||8586||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x08366C||7699||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x08547F||15395||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0890A2||9218||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x08B4A4||2843||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x08BFBF||6790||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x08DA45||15386||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x09165F||3413||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0923B4||9087||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x094733||7158||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x096329||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x096885||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x096DE1||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x09733D||4837||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x098622||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x098B7E||210650||unknown||&lt;br /&gt;
|}&lt;br /&gt;
PCM Sound Effects are raw 8-bit unsigned, but end with a 00 byte like [[VOC Format|VOC Files]].&lt;br /&gt;
There is one Instrument Bank (BNK) file for each IMS song. The first BNK belongs to the first IMS, the second BNK to the second IMS, etc.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This file format was reverse engineered by [[User:ValleyBell|Valley Bell]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=SoftMax_Resource_File_Format&amp;diff=6799</id>
		<title>SoftMax Resource File Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=SoftMax_Resource_File_Format&amp;diff=6799"/>
		<updated>2016-03-05T12:04:14Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: instrument banks are BNK Format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Archive Infobox&lt;br /&gt;
 | MaxFiles = Set by FAT length&lt;br /&gt;
 | FAT = External&lt;br /&gt;
 | Names = N&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Subdirectories = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Encrypted = N&lt;br /&gt;
 | Hidden = N&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Sky &amp;amp; Rica}}&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;ArtCraft Resource File Format&#039;&#039;&#039; is used by games of the Korean developer Artcraft.&lt;br /&gt;
The format itself stores no offsets and/or file names. Instead, potential file tables are stored in the game EXE files or are even calculated using formulas.&lt;br /&gt;
&lt;br /&gt;
The format is very similar to [[ArtCraft Resource File Format]], which is used in the earlier released game [[Lychnis]].&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
=== Signature ===&lt;br /&gt;
&lt;br /&gt;
Sky &amp;amp; Rica uses the following signature:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type!!Name!!Description&lt;br /&gt;
|-&lt;br /&gt;
|BYTE[0x20]||cSignature||&amp;quot;(C) SoftMax Resource File&amp;quot; 0x1A 0x00*6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== FAT ===&lt;br /&gt;
The File Allocation Table, if available, is stored in the game executables.&lt;br /&gt;
&lt;br /&gt;
[[Sky &amp;amp; Rica]] (unlike Lychnis) stores only very few information about the resource files. For most of the files, there is only a list of UINT32LE file offsets. For the sound effects, there is an additional UINT32LE list of file sizes. For some files, offsets are calculated by the game.&lt;br /&gt;
S&amp;amp;R.EXE and SETUP.EXE don&#039;t use resource files.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!EXE File!!Resource file!!Number of files!!File offsets!!File sizes!!File type&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot;|FRAME.EXE ||s&amp;amp;r4.res||135*||0x011A84||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r1.res|| 10*||0x01242C||   --   ||Cutscene Data?&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r2.res|| 10*||0x012454||   --   ||Cutscene Data?&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 44*||0x012700||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 33 ||0x012806||0x01288A||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE1.EXE||s&amp;amp;r4.res||120 ||0x012F9C||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 42 ||0x013DAA||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013EA8||0x013F34||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE2.EXE||s&amp;amp;r4.res||132 ||0x01305C||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x013E6A||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013FBC||0x014048||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE3.EXE||s&amp;amp;r4.res||120 ||0x012224||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 42 ||0x013028||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013126||0x0131B2||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE4.EXE||s&amp;amp;r4.res||120 ||0x013994||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x0147D2||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x014924||0x0149B0||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE5.EXE||s&amp;amp;r4.res||133 ||0x0138C4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x0146D8||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x01482A||0x0148B6||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE6.EXE||s&amp;amp;r4.res||120 ||0x0121B4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 44*||0x012FCC||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x0130CA||0x013156||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE7.EXE||s&amp;amp;r4.res||120 ||0x013754||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x014558||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x0146AA||0x014736||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE9.EXE||s&amp;amp;r4.res||134 ||0x011CE4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x012AFA||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x012C4C||0x012CD8||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|TITLE.EXE ||s&amp;amp;r4.res||120 ||0x0088A6||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x008F2A||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x00907C||0x009108||Sound Effects&lt;br /&gt;
|}&lt;br /&gt;
It should be noted that not all executables have full file tables. For example, &amp;lt;tt&amp;gt;TITLE.EXE&amp;lt;/tt&amp;gt; doesn&#039;t have all music offsets, but the SFX list is complete. &amp;lt;tt&amp;gt;FRAME.EXE&amp;lt;/tt&amp;gt; has all music offsets, but lacks one sound effect.&lt;br /&gt;
All complete tables are marked with a *.&lt;br /&gt;
&lt;br /&gt;
Sound Effects are raw 8-bit unsigned PCM. Music consists of IMS and BNK files.&lt;br /&gt;
&lt;br /&gt;
== List of files ==&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R1.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||887935||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x0D8C9F||333482||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x12A349||27524||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x130ECD||22472||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x136695||402640||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x198B65||137224||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x1BA36D||296062||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x2027EB||126749||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x221708||183262||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x24E2E6||143358||unknown||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R2.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||204805||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x032025||665605||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x0D482A||65413||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x0E47AF||422061||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x14B85C||363058||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x1A428E||237377||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x1DE1CF||446701||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x24B2BC||447507||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x2B86CF||66560||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x2C8ACF||189980||unknown||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R3.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||6752||Map Data||Title Screen&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001A80||16128||Map Data||Stage 1&lt;br /&gt;
|-&lt;br /&gt;
|2||0x005980||16128||Map Data||Stage 2&lt;br /&gt;
|-&lt;br /&gt;
|3||0x009880||14528||Map Data||Stage 3&lt;br /&gt;
|-&lt;br /&gt;
|4||0x00D140||16128||Map Data||Stage 4&lt;br /&gt;
|-&lt;br /&gt;
|5||0x011040||16128||Map Data||Stage 5&lt;br /&gt;
|-&lt;br /&gt;
|6||0x014F40||16128||Map Data||Stage 6&lt;br /&gt;
|-&lt;br /&gt;
|7||0x018E40||14368||Map Data||Stage 7&lt;br /&gt;
|-&lt;br /&gt;
|8||0x01C660||75904||Tile Data||Title Screen&lt;br /&gt;
|-&lt;br /&gt;
|9||0x02EEE0||216192||Tile Data||Stage 1&lt;br /&gt;
|-&lt;br /&gt;
|10||0x063B60||252032||Tile Data||Stage 2&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0A13E0||400768||Tile Data||Stage 3&lt;br /&gt;
|-&lt;br /&gt;
|12||0x103160||232064||Tile Data||Stage 4&lt;br /&gt;
|-&lt;br /&gt;
|13||0x13BBE0||173440||Tile Data||Stage 5&lt;br /&gt;
|-&lt;br /&gt;
|14||0x166160||236928||Tile Data||Stage 6&lt;br /&gt;
|-&lt;br /&gt;
|15||0x19FEE0||330368||Tile Data||Stage 7&lt;br /&gt;
|-&lt;br /&gt;
|16||0x1F0960||16896||Map Data||Stage 9&lt;br /&gt;
|-&lt;br /&gt;
|17||0x1F4B60||252032||Tile Data||Stage 9&lt;br /&gt;
|}&lt;br /&gt;
Since all of the offsets are hardcoded into the game executables, I searched for magic bytes.&lt;br /&gt;
Those were &amp;quot;Map File&amp;quot; and &amp;quot;Tile File&amp;quot; for map and tile data respectively. Both file types also contain the string &amp;quot;Innovation! 1994&amp;quot;.&lt;br /&gt;
In the &amp;lt;tt&amp;gt;STAGE#.EXE&amp;lt;/tt&amp;gt; files the offsets can be located by searching for the following magic bytes:&amp;lt;br/&amp;gt;&lt;br /&gt;
Map Data (4-byte offset): &amp;lt;tt&amp;gt;F8 89 46 F6 6A 00 66 68 xx xx xx xx&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Map Data (1-byte offset): &amp;lt;tt&amp;gt;F8 89 46 F6 6A 00 66 6A xx&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Tile Data (4-byte offset): &amp;lt;tt&amp;gt;FA 89 46 F8 6A 00 66 68 xx xx xx xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R4.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||11367||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x002C87||9268||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x0050BB||34823||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x00D8C2||25280||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x013B82||7640||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x01595A||14302||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x019138||28980||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x02026C||14448||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x023ADC||4435||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x024C2F||13515||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0280FA||10548||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x02AA2E||13956||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x02E0B2||5752||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x02F72A||10245||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x031F2F||3846||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x032E35||16144||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x036D45||11848||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x039B8D||7194||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x03B7A7||8642||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x03D969||13390||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x040DB7||12972||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x044063||6822||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x045B09||7216||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x047739||15168||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x04B279||40454||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x05507F||10136||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x057817||7347||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x0594CA||7566||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x05B258||5436||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x05C794||8796||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x05E9F0||9283||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x060E33||3717||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x061CB8||11706||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x064A72||13298||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x067E64||11108||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x06A9C8||3417||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x06B721||39070||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x074FBF||5588||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x076593||8923||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x07886E||5450||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x079DB8||11653||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x07CB3D||53464||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x089C15||11620||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x08C979||6494||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x08E2D7||3146||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x08EF21||20656||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x093FD1||1922||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x094753||17723||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x098C8E||8592||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x09AE1E||5013||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x09C1B3||34029||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x0A46A0||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x0AAE8D||4276||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x0ABF41||35885||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x0B4B6E||47021||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x0C031B||7005||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x0C1E78||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x0C8665||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x0CEE52||34029||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x0D733F||1958||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x0D7AE5||3584||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x0D88E5||2789||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x0D93CA||7121||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0DAF9B||13715||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x0DE52E||21591||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x0E3985||9948||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0E6061||7054||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x0E7BEF||4680||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x0E8E37||3378||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x0E9B69||5103||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x0EAF58||6835||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0ECA0B||9360||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x0EEE9B||172253||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x118F78||147305||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x13CEE1||19053||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x14194E||1787||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x142049||1513||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x142632||4962||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x143994||10437||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|79||0x146259||6622||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|80||0x147C37||3464||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|81||0x1489BF||4085||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|82||0x1499B4||27629||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|83||0x1505A1||19785||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|84||0x1552EA||4164||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|85||0x15632E||17084||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|86||0x15A5EA||13467||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|87||0x15DA85||7184||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|88||0x15F695||44831||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|89||0x16A5B4||8968||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|90||0x16C8BC||63467||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|91||0x17C0A7||8856||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|92||0x17E33F||6715||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|93||0x17FD7A||4050||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|94||0x180D4C||1355||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|95||0x181297||12398||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|96||0x184305||16593||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|97||0x1883D6||108061||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|98||0x1A29F3||3604||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|99||0x1A3807||33899||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|100||0x1ABC72||16701||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|101||0x1AFDAF||63112||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|102||0x1BF437||9400||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|103||0x1C18EF||4269||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|104||0x1C299C||6613||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|105||0x1C4371||44437||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|106||0x1CF106||3259||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|107||0x1CFDC1||7243||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|108||0x1D1A0C||11166||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|109||0x1D45AA||48331||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|110||0x1E0275||3010||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|111||0x1E0E37||83755||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|112||0x1F5562||10248||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|113||0x1F7D6A||3729||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|114||0x1F8BFB||7018||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|115||0x1FA765||14275||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|116||0x1FDF28||3192||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|117||0x1FEBA0||8064||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|118||0x200B20||7931||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|119||0x202A1B||6108||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|120||0x2041F7||18091||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|121||0x2088A2||118034||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|122||0x2255B4||31292||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|123||0x22CFF0||1484||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|124||0x22D5BC||4637||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|125||0x22E7D9||7771||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|126||0x230634||3980||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|127||0x2315C0||27329||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|128||0x238081||11086||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|129||0x23ABCF||4631||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|130||0x23BDE6||1417||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|131||0x23C36F||16593||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|132||0x240440||33899||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|133||0x2488AB||39938||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|134||0x2524AD||8222||Sprite Data||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R5.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||4609||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001221||4609||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002422||7759||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x004271||7759||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x0060C0||3735||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x006F57||11387||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x009BD2||6244||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x00B436||12243||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x00E409||7532||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x010175||14259||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x013928||6203||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x015163||19699||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x019E56||42261||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x02436B||6169||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x025B84||4318||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x026C62||3702||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x027AD8||7944||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x0299E0||2167||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x02A257||3006||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x02AE15||4667||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x02C050||7901||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x02DF2D||5982||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x02F68B||9396||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x031B3F||156577||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x057EE0||2715||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x05897B||2608||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x0593AB||3480||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x05A143||6480||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x05BA93||9771||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x05E0BE||2284||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x05E9AA||1435||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x05EF45||39331||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x0688E8||2177||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x069169||12701||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x06C306||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x06C862||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x06CDBE||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x06D31A||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x06D876||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x06DDD2||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x06E32E||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x06E88A||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x06EDE6||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x06F342||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x06F89E||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x06FDFA||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x070356||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x0708B2||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x070E0E||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x07136A||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x0718C6||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x071E22||14491||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x0756BD||2179||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x075F40||2416||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x0768B0||438||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x076A66||2836||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x07757A||9280||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x0799BA||4833||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x07AC9B||4013||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x07BC48||651||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x07BED3||9877||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x07E568||5364||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x07FA5C||6790||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0814E2||8586||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x08366C||7699||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x08547F||15395||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0890A2||9218||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x08B4A4||2843||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x08BFBF||6790||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x08DA45||15386||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x09165F||3413||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0923B4||9087||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x094733||7158||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x096329||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x096885||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x096DE1||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x09733D||4837||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x098622||1372||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x098B7E||210650||unknown||&lt;br /&gt;
|}&lt;br /&gt;
PCM Sound Effects are raw 8-bit unsigned, but end with a 00 byte like [[VOC Format|VOC Files]].&lt;br /&gt;
There is one Timbre Bank (BNK) file for each IMS song. The first BNK belongs to the first IMS, the second BNK to the second IMS, etc.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This file format was reverse engineered by [[User:ValleyBell|Valley Bell]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ArtCraft_Resource_File_Format&amp;diff=6798</id>
		<title>ArtCraft Resource File Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ArtCraft_Resource_File_Format&amp;diff=6798"/>
		<updated>2016-03-05T12:03:32Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: instrument banks are BNK Format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Archive Infobox&lt;br /&gt;
 | MaxFiles = Set by FAT length&lt;br /&gt;
 | FAT = External&lt;br /&gt;
 | Names = Yes&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Subdirectories = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Encrypted = N&lt;br /&gt;
 | Hidden = N&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Lychnis}}&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;ArtCraft Resource File Format&#039;&#039;&#039; is used by games of the Korean developer Artcraft.&lt;br /&gt;
The format itself stores no offsets and/or file names. Instead, file tables are stored in the game EXE files.&lt;br /&gt;
&lt;br /&gt;
The format is very similar to [[SoftMax Resource File Format]], which is used in the later released game [[Sky &amp;amp; Rica]].&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
=== Signature ===&lt;br /&gt;
&lt;br /&gt;
Lychnis uses the following signature:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type!!Name!!Description&lt;br /&gt;
|-&lt;br /&gt;
|BYTE[0x20]||cSignature||&amp;quot;(C) ArtCraft Resource File&amp;quot; 0x1A 0x00*5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== FAT ===&lt;br /&gt;
The File Allocation Table is stored in the game executables.&lt;br /&gt;
&lt;br /&gt;
[[Lychnis]] separately stores a list of file names (13-character strings, NULL-terminated), a list of UINT32LE file offsets and a list of UINT32LE file sizes. The lists are stored consecutively and in that order. The main executable &amp;lt;tt&amp;gt;LYCHNIS.EXE&amp;lt;/tt&amp;gt; only contains a FAT for &amp;lt;tt&amp;gt;LYCHNIS2.RES&amp;lt;/tt&amp;gt;. The resource file itself contains other executables, which also only contain the FAT for one of the two resource files.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!EXE File!!Resource file!!Number of files!!File names!!File offsets!!File sizes&lt;br /&gt;
|-&lt;br /&gt;
|LYCHNIS.EXE||lychnis2.res||114||0x00ECC0||0x00F28A||0x00F452&lt;br /&gt;
|-&lt;br /&gt;
|LYCH1||lychnis1.res||226||0x014CD0||0x01584A||0x015BD2&lt;br /&gt;
|-&lt;br /&gt;
|LYCH1P||lychnis1.res||226||0x012D32||0x0138AC||0x013C34&lt;br /&gt;
|-&lt;br /&gt;
|LYCH2||lychnis1.res||226||0x016DEE||0x017968||0x017CF0&lt;br /&gt;
|-&lt;br /&gt;
|LYCH2P||lychnis1.res||226||0x01661C||0x017196||0x01751E&lt;br /&gt;
|-&lt;br /&gt;
|LYCH3||lychnis1.res||226||0x015564||0x0160DE||0x016466&lt;br /&gt;
|-&lt;br /&gt;
|LYCH3P||lychnis1.res||226||0x014D72||0x0158EC||0x015C74&lt;br /&gt;
|-&lt;br /&gt;
|LYCH4||lychnis1.res||226||0x01454E||0x0150C8||0x015450&lt;br /&gt;
|-&lt;br /&gt;
|LYCH5||lychnis1.res||226||0x014D70||0x0158EA||0x015C72&lt;br /&gt;
|-&lt;br /&gt;
|LYCHB6||lychnis2.res||114||0x00C8F8||0x00CEC2||0x00D08A&lt;br /&gt;
|-&lt;br /&gt;
|BONUS||lychnis1.res||226||0x01281C||0x013396||0x01371E&lt;br /&gt;
|}&lt;br /&gt;
The file tables match between all executables that use the same resource file.&lt;br /&gt;
&lt;br /&gt;
== List of files ==&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;LYCHNIS2.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Game executables can be renamed to .exe and executed directly. They read the configuration file &amp;lt;tt&amp;gt;LYCH.CFG&amp;lt;/tt&amp;gt; to get the level to load.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Filename!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||1372||MAP.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x00057C||1372||OPENING1.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x000AD8||1372||OPENING2.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x001034||1372||P-SELECT.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x001590||1372||SHOP.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x001AEC||1372||SLOT.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x002048||1372||STAFFROL.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x0025A4||1372||TITLE2.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x002B00||15497||MAP.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x006789||9028||OPENING1.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x008ACD||5150||OPENING2.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x009EEB||5184||P-SELECT.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00B32B||9532||SHOP.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D867||9395||SLOT.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00FD1A||20001||STAFFROL.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x014B3B||6596||TITLE2.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x0164FF||12583||DRAGON.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x019626||16566||ENDBACK.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x01D6DC||7529||LOGO.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x01F445||23289||MAP.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x024F3E||19887||OPBACK.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x029CED||14145||OPGONG.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x02D42E||14393||OPIRIS.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x030C67||7152||OPLYCH.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x032857||26316||PLS.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x038F23||36965||SHOP.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x041F88||41849||SLOTBOX.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x04C301||18666||STAFFB.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x050BEB||10158||TITLE1.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x053399||11358||TITLE2.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x055FF7||768||DRAGON.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x0562F7||768||ENDING.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x0565F7||768||LOGO.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x0568F7||768||MAP.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x056BF7||768||OPEN.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x056EF7||768||PLS.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x0571F7||768||SHOP.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x0574F7||768||SLOTBOX.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x0577F7||768||STAFFROL.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x057AF7||768||TITLE.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x057DF7||33418||CAST.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x060081||1581||CURSOR.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x0606AE||8197||ENDING.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x0626B3||1179||EYE.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x062B4E||13740||IRISTITL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x0660FA||9719||KA.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x0686F1||6067||LYCHTITL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x069EA4||3165||MAPFACE.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x06AB01||1526||MAPMARK.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x06B0F7||26795||NARR1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x0719A2||22665||NARR2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x07722B||14806||NARR3.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x07AC01||18584||NARR4.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x07F499||2064||NUMBER.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x07FCA9||11032||OPTION.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x0827C1||13260||OX.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x085B8D||33587||PLS.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x08DEC0||5187||ROCK.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x08F303||16277||SAKI.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x093298||4160||SHOPCOIN.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x0942D8||15214||SHOPFACE.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x097E46||29187||SHOPMSG.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x09F049||25144||SLOT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0A5281||6476||SLOTNUM.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x0A6BCD||34564||STAFFROL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x0AF2D1||2316||T1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0AFBDD||1204||T2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x0B0091||8937||TIT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x0B237A||3240||TIT2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x0B3022||8825||TIT3.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x0B529B||26018||WEAPON.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0BB83D||4471||CHOICE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x0BC9B4||59631||LOGO.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x0CB2A3||1523||SELECT.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x0CB896||83066||BONUS||Game Executable||Bonus Stages&lt;br /&gt;
|-&lt;br /&gt;
|75||0x0DFD10||92462||LYCH1||Game Executable||Stages 1-x&lt;br /&gt;
|-&lt;br /&gt;
|76||0x0F663E||100940||LYCH2||Game Executable||Stages 2-x&lt;br /&gt;
|-&lt;br /&gt;
|77||0x10F08A||94658||LYCH3||Game Executable||Stages 3-x&lt;br /&gt;
|-&lt;br /&gt;
|78||0x12624C||90540||LYCH4||Game Executable||Stages 4-x&lt;br /&gt;
|-&lt;br /&gt;
|79||0x13C3F8||92622||LYCH5||Game Executable||Stages 5-x&lt;br /&gt;
|-&lt;br /&gt;
|80||0x152DC6||83048||LYCH1P||Game Executable||Stage 1-3 Demo Play (with Lychnis)&lt;br /&gt;
|-&lt;br /&gt;
|81||0x16722E||99264||LYCH2P||Game Executable||Stage 2-2 Demo Play (with Iris)&lt;br /&gt;
|-&lt;br /&gt;
|82||0x17F5EE||92950||LYCH3P||Game Executable||Stage 3-2 Demo Play (with Lychnis)&lt;br /&gt;
|-&lt;br /&gt;
|83||0x196104||768||STAGE5.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|84||0x196404||23859||ST6BS.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|85||0x19C137||9010||BING.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|86||0x19E469||15009||BOSSSLOT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|87||0x1A1F0A||6154||EFF1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|88||0x1A3714||2221||EFF2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|89||0x1A3FC1||17653||INFO6.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|90||0x1A84B6||28250||IRIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|91||0x1AF310||11760||ITEM15.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|92||0x1B2100||10307||ITEM2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|93||0x1B4943||30352||LYCHNIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|94||0x1BBFD3||8627||MOLEN31.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|95||0x1BE186||53463||NBOSS6.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|96||0x1CB25D||7707||NBOSS622.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|97||0x1CD078||4982||NUMBER2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|98||0x1CE3EE||5204||PPANG.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|99||0x1CF842||1372||CLEARSTG.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|100||0x1CFD9E||1372||FINALBOS.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|101||0x1D02FA||1372||CLEAR.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|102||0x1D0856||1372||GAMEOVER.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|103||0x1D0DB2||1496||CLEAR.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|104||0x1D138A||52550||FINALBOS.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|105||0x1DE0D0||3733||GAMEOVER.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|106||0x1DEF65||4161||ATTACK.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|107||0x1DFFA6||9783||BOMB.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|108||0x1E25DD||5621||DEFENCE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|109||0x1E3BD2||5379||ITEM2.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|110||0x1E50D5||1869||MAGIC1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|111||0x1E5822||15426||NPAUSE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|112||0x1E9464||2251||SWORD1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|113||0x1E9D2F||56368||LYCHB6||Game Executable||Final Boss&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;LYCHNIS1.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Filename!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||239||STEP.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x00010F||1523||SELECT.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x000702||1869||MAGIC1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x000E4F||2251||SWORD1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x00171A||2797||BOPEN.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x002207||2968||ZZZ.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x002D9F||3296||ITEM.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x003A7F||4161||ATTACK.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x004AC0||4352||BIRD.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x005BC0||4471||CHOICE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x006D37||5379||ITEM2.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00823A||5503||XITEM.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0097B9||5621||DEFENCE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00ADAE||7047||COIN.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00C935||7476||1UP.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00E669||9783||BOMB.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010CA0||15426||NPAUSE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x0148E2||4377||BALL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x0159FB||2323||BAT1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x01630E||2339||BAT2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x016C31||12780||BEAR1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x019E1D||6658||CACTUS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x01B81F||6676||CACTUS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x01D233||3348||CONCH1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x01DF47||4095||CRAB1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x01EF46||4113||CRAB2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x01FF57||3518||CRAW1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x020D15||3444||CRAW2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x021A89||8730||EFF1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x023CA3||3253||EFF2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x024958||6296||FBIRD1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x0261F0||6442||FBIRD2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x027B1A||6965||FIRE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x02964F||6967||FIRE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x02B186||6202||FROG1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x02C9C0||6168||FROG2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x02E1D8||2755||GRASS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x02EC9B||2745||GRASS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x02F754||3130||HEDGEN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x03038E||2447||HEDGEN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x030D1D||3438||HORSE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x031A8B||3262||HORSE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x032749||5783||ICICLE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x033DE0||20713||INFO1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x038EC9||21209||INFO2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x03E1A2||20315||INFO3.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x0430FD||20430||INFO4.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x0480CB||20895||INFO5.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x04D26A||22068||INFOB.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x05289E||20525||IRIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x0578CB||20275||IRIS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x05C7FE||11949||ITEM11.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x05F6AB||11868||ITEM12.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x062507||12084||ITEM13.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x06543B||11929||ITEM14.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x0682D4||11760||ITEM15.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x06B0C4||11718||ITEM1B.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x06DE8A||10307||ITEM2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x0706CD||3614||LIEBOX1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x0714EB||3500||LIEBOX2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x072297||21479||LYCHNIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x07767E||22061||LYCHNIS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x07CCAB||1437||MAGIC10.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x07D248||1476||MAGIC11.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x07D80C||1863||MAGIC12.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x07DF53||1941||MAGIC13.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x07E6E8||2524||MAGIC14.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x07F0C4||1575||MAGIC20.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x07F6EB||1542||MAGIC21.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x07FCF1||1919||MAGIC22.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x080470||2029||MAGIC23.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x080C5D||2714||MAGIC24.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x0816F7||3360||MOLEGHO1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x082417||3400||MOLEGHO2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x08315F||8224||MOLEN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x08517F||8496||MOLEN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x0872AF||8604||MOLEN21.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x08944B||9244||MOLEN22.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x08B867||8627||MOLEN31.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|79||0x08DA1A||8557||MOLEN32.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|80||0x08FB87||6175||MOLEN41.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|81||0x0913A6||6489||MOLEN42.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|82||0x092CFF||2274||MOUSE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|83||0x0935E1||2270||MOUSE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|84||0x093EBF||5558||MUSHN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|85||0x095475||5614||MUSHN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|86||0x096A63||4982||NUMBER2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|87||0x097DD9||5579||OWLN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|88||0x0993A4||6360||PELICAN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|89||0x09AC7C||6556||PELICAN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|90||0x09C618||10056||PENGUIN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|91||0x09ED60||9734||PENGUIN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|92||0x0A1366||6266||PUMPKIN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|93||0x0A2BE0||6256||PUMPKIN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|94||0x0A4450||1678||RAFT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|95||0x0A4ADE||2989||RMOLE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|96||0x0A568B||2903||RMOLE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|97||0x0A61E2||3275||SALAMAN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|98||0x0A6EAD||3297||SALAMAN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|99||0x0A7B8E||2948||SCOLP1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|100||0x0A8712||2908||SCOLP2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|101||0x0A926E||4394||SKULL1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|102||0x0AA398||4394||SKULL2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|103||0x0AB4C2||3896||SNAIL1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|104||0x0AC3FA||3886||SNAIL2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|105||0x0AD328||5517||SNOWMAN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|106||0x0AE8B5||5649||SNOWMAN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|107||0x0AFEC6||4955||SPEAR1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|108||0x0B1221||4955||SPEAR2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|109||0x0B257C||1824||SWORD10.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|110||0x0B2C9C||1807||SWORD11.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|111||0x0B33AB||2496||SWORD12.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|112||0x0B3D6B||2536||SWORD13.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|113||0x0B4753||2945||SWORD14.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|114||0x0B52D4||3126||SWORD15.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|115||0x0B5F0A||1952||SWORD20.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|116||0x0B66AA||1933||SWORD21.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|117||0x0B6E37||2660||SWORD22.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|118||0x0B789B||2682||SWORD23.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|119||0x0B8315||3065||SWORD24.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|120||0x0B8F0E||3212||SWORD25.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|121||0x0B9B9A||2062||TRAIN.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|122||0x0BA3A8||7496||TREE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|123||0x0BC0F0||7470||TREE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|124||0x0BDE1E||5645||TURTLE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|125||0x0BF42B||5791||TURTLE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|126||0x0C0ACA||2673||VOLCANO.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|127||0x0C153B||9991||ZOMBIE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|128||0x0C3C42||10135||ZOMBIE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|129||0x0C63D9||2555||BONUS1.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|130||0x0C6DD4||2589||BONUS2.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|131||0x0C77F1||542||BONUS3.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|132||0x0C7A0F||534||BONUS4.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|133||0x0C7C25||3342||ST1-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|134||0x0C8933||3505||ST1-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|135||0x0C96E4||3773||ST1-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|136||0x0CA5A1||3316||ST1-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|137||0x0CB295||4523||ST1-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|138||0x0CC440||4564||ST1-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|139||0x0CD614||4926||ST2-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|140||0x0CE952||4206||ST2-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|141||0x0CF9C0||4648||ST2-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|142||0x0D0BE8||4642||ST2-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|143||0x0D1E0A||4898||ST2-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|144||0x0D312C||4296||ST2-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|145||0x0D41F4||3100||ST3-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|146||0x0D4E10||2374||ST3-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|147||0x0D5756||4500||ST3-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|148||0x0D68EA||4572||ST3-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|149||0x0D7AC6||3676||ST3-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|150||0x0D8922||3619||ST3-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|151||0x0D9745||2999||ST4-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|152||0x0DA2FC||2658||ST4-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|153||0x0DAD5E||2305||ST4-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|154||0x0DB65F||1817||ST4-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|155||0x0DBD78||4032||ST4-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|156||0x0DCD38||4143||ST4-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|157||0x0DDD67||4087||ST5-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|158||0x0DED5E||3097||ST5-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|159||0x0DF977||1081||ST5-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|160||0x0DFDB0||1100||ST5-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|161||0x0E01FC||4854||ST5-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|162||0x0E14F2||5055||ST5-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|163||0x0E28B1||768||STAGE1.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|164||0x0E2BB1||768||STAGE2.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|165||0x0E2EB1||768||STAGE3.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|166||0x0E31B1||768||STAGE4.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|167||0x0E34B1||768||STAGE5.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|168||0x0E37B1||22465||BONUSSTG.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|169||0x0E8F72||1496||CLEAR.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|170||0x0E954A||3733||GAMEOVER.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|171||0x0EA3DF||24704||LYCH0001.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|172||0x0F045F||31708||LYCH0002.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|173||0x0F803B||35483||LYCH0003.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|174||0x100AD6||34069||LYCH0004.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|175||0x108FEB||42622||LYCH0005.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|176||0x113669||1372||BONUSSTG.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|177||0x113BC5||1372||CLEAR.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|178||0x114121||1372||GAMEOVER.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|179||0x11467D||1372||LYCH0001.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|180||0x114BD9||1372||LYCH0002.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|181||0x115135||1372||LYCH0003.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|182||0x115691||1372||LYCH0004.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|183||0x115BED||1372||LYCH0005.BNK||[[AdLib Instrument Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|184||0x116149||24032||BONUS1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|185||0x11BF29||8032||BONUS2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|186||0x11DE89||4032||BONUS3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|187||0x11EE49||20032||BONUS4.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|188||0x123C89||10272||STAGE1-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|189||0x1264A9||64032||STAGE1-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|190||0x135EC9||32432||STAGE1-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|191||0x13DD79||50032||STAGE2-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|192||0x14A0E9||64032||STAGE2-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|193||0x159B09||40032||STAGE2-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|194||0x163769||42032||STAGE3-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|195||0x16DB99||64032||STAGE3-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|196||0x17D5B9||64032||STAGE3-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|197||0x18CFD9||60032||STAGE4-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|198||0x19BA59||64032||STAGE4-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|199||0x1AB479||48032||STAGE4-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|200||0x1B7019||20032||STAGE5-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|201||0x1BBE59||36032||STAGE5-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|202||0x1C4B19||24032||STAGE5-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|203||0x1CA8F9||131102||BONUS1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|204||0x1EA917||131102||BONUS2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|205||0x20A935||131102||BONUS3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|206||0x22A953||131102||BONUS4.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|207||0x24A971||131102||STAGE1-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|208||0x26A98F||131102||STAGE1-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|209||0x28A9AD||131102||STAGE1-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|210||0x2AA9CB||131102||STAGE2-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|211||0x2CA9E9||131102||STAGE2-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|212||0x2EAA07||131102||STAGE2-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|213||0x30AA25||131102||STAGE3-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|214||0x32AA43||131102||STAGE3-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|215||0x34AA61||131102||STAGE3-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|216||0x36AA7F||131102||STAGE4-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|217||0x38AA9D||131102||STAGE4-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|218||0x3AAABB||131102||STAGE4-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|219||0x3CAAD9||131102||STAGE5-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|220||0x3EAAF7||131102||STAGE5-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|221||0x40AB15||131102||STAGE5-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|222||0x42AB33||15000||ST1-3N.MAC||Recorded keys for demo playback||&lt;br /&gt;
|-&lt;br /&gt;
|223||0x42E5CB||15000||ST2-2N.MAC||Recorded keys for demo playback||&lt;br /&gt;
|-&lt;br /&gt;
|224||0x432063||15000||ST3-2N.MAC||Recorded keys for demo playback||&lt;br /&gt;
|-&lt;br /&gt;
|225||0x435AFB||15000||ST4-1N.MAC||Recorded keys for demo playback||unused as there is no LYCH4P executable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This file format was reverse engineered by [[User:ValleyBell|Valley Bell]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=IMS_Format&amp;diff=6797</id>
		<title>IMS Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=IMS_Format&amp;diff=6797"/>
		<updated>2016-03-05T12:01:21Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: instrument banks are BNK Format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Music Infobox&lt;br /&gt;
 | Type = MIDI&lt;br /&gt;
 | Instruments = OPL&lt;br /&gt;
 | NumChannels = 9 or 11&lt;br /&gt;
 | NumTracks = 1&lt;br /&gt;
 | NumPatterns = 1&lt;br /&gt;
 | NumOrders = 0&lt;br /&gt;
 | Tags = Title&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Dragon Slayer: The Legend of Heroes}}&lt;br /&gt;
   {{Game|Eol!}}&lt;br /&gt;
   {{Game|Illusion Blaze}}&lt;br /&gt;
   {{Game|Iron Blood}}&lt;br /&gt;
   {{Game|Lychnis}}&lt;br /&gt;
   {{Game|Olmang Jolmang Paradise}}&lt;br /&gt;
   {{Game|Pee and Gity}}&lt;br /&gt;
   {{Game|Reon-ui Moheom}}&lt;br /&gt;
   {{Game|Shakii The Wolf}}&lt;br /&gt;
   {{Game|Sky &amp;amp; Rica}}&lt;br /&gt;
   {{Game|Vanslug: X Mission}}&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;IMS Format&#039;&#039;&#039; is an Ad Lib music format, based on the standard MIDI format. It is commonly seen in Korean DOS games.&lt;br /&gt;
&lt;br /&gt;
The format is very similar to the [[AdLib MIDI Format]], but has an additional instrument table appended.&lt;br /&gt;
The instruments themselves are stored in a separate instrument bank in [[AdLib Instrument Bank Format]].&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
The file consists of a MIDI part that mostly matches the AdLib MIDI Format v1.0 and an instrument table that tells the player what instruments are to be loaded.&lt;br /&gt;
&lt;br /&gt;
The instrument table is appended to the end of the MIDI data and has the following header:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| BYTE[2] || cSignature || 0x77 0x77 (&amp;quot;ww&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| UINT16LE || numInstruments || Number of instruments used by the song&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is followed by a list of instrument names, repeated &amp;lt;tt&amp;gt;numInstruments&amp;lt;/tt&amp;gt; times:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| char[9] || name || Instrument name - must be NULL-terminated&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of the instrument names refers to the name of an instrument of an external instrument bank.&lt;br /&gt;
&lt;br /&gt;
=== MIDI Commands ===&lt;br /&gt;
* Except for 8#, all commands match the [[AdLib MIDI Format]].&lt;br /&gt;
* As with usual MIDI files, the &amp;quot;running status&amp;quot; is supported for commands 8#..E#.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; |&lt;br /&gt;
! MIDI message !! Meaning !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|8# nn vv||Note Retrigger||Stops the current note, then plays a new note if (vv &amp;gt; 0)&lt;br /&gt;
|-&lt;br /&gt;
|9# nn vv||Note On||Plays a note (vv &amp;gt; 0) or stops it (vv = 0)&lt;br /&gt;
|-&lt;br /&gt;
|A# vv||Volume Change||Changes the volume of the current note (also works after Note Off)&lt;br /&gt;
|-&lt;br /&gt;
|B# xx xx||ignored||MIDI Control Change&lt;br /&gt;
|-&lt;br /&gt;
|C# ii||Instrument Change||references an instrument from the instrument table&lt;br /&gt;
|-&lt;br /&gt;
|D# xx||ignored||MIDI Channel Aftertouch&lt;br /&gt;
|-&lt;br /&gt;
|E# ll mm||Pitch Bend||usual MIDI pitch bend, usually in the range of 1 semitone up/down&lt;br /&gt;
|-&lt;br /&gt;
|F0 7F 00 ii ff F7||Tempo Change||new Tempo = Initial Tempo * (ii + ff/0x80)&lt;br /&gt;
|-&lt;br /&gt;
|F0 xx ... xx F7||ignored||MIDI SysEx (without length)&lt;br /&gt;
|-&lt;br /&gt;
|F8||Delay Overflow||causes a delay of 240 ticks&lt;br /&gt;
|-&lt;br /&gt;
|FC||Song End||stops the song or restarts it from the beginning if looping is enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=audio}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [http://ulisu.egloos.com/1236597 OCPlay]&lt;br /&gt;
| Platform = DOS&lt;br /&gt;
| canPlay = Yes&lt;br /&gt;
| canCreate = No&lt;br /&gt;
| canModify = No&lt;br /&gt;
| canExport = No&lt;br /&gt;
| canImport = No&lt;br /&gt;
| editHidden = No&lt;br /&gt;
| editMetadata = No&lt;br /&gt;
| notes = &lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:ValleyBell|Valley Bell]] from IMS songs used by [[Family Production]] games and by disassembling [[Lychnis]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
Also thanks to MaliceX for helping to identify games that use IMS songs.&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=SoftMax_Resource_File_Format&amp;diff=6793</id>
		<title>SoftMax Resource File Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=SoftMax_Resource_File_Format&amp;diff=6793"/>
		<updated>2016-03-05T08:48:55Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: Initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Archive Infobox&lt;br /&gt;
 | MaxFiles = Set by FAT length&lt;br /&gt;
 | FAT = External&lt;br /&gt;
 | Names = N&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Subdirectories = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Encrypted = N&lt;br /&gt;
 | Hidden = N&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Sky &amp;amp; Rica}}&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;ArtCraft Resource File Format&#039;&#039;&#039; is used by games of the Korean developer Artcraft.&lt;br /&gt;
The format itself stores no offsets and/or file names. Instead, potential file tables are stored in the game EXE files or are even calculated using formulas.&lt;br /&gt;
&lt;br /&gt;
The format is very similar to [[ArtCraft Resource File Format]], which is used in the earlier released game [[Lychnis]].&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
=== Signature ===&lt;br /&gt;
&lt;br /&gt;
Sky &amp;amp; Rica uses the following signature:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type!!Name!!Description&lt;br /&gt;
|-&lt;br /&gt;
|BYTE[0x20]||cSignature||&amp;quot;(C) SoftMax Resource File&amp;quot; 0x1A 0x00*6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== FAT ===&lt;br /&gt;
The File Allocation Table, if available, is stored in the game executables.&lt;br /&gt;
&lt;br /&gt;
[[Sky &amp;amp; Rica]] (unlike Lychnis) stores only very few information about the resource files. For most of the files, there is only a list of UINT32LE file offsets. For the sound effects, there is an additional UINT32LE list of file sizes. For some files, offsets are calculated by the game.&lt;br /&gt;
S&amp;amp;R.EXE and SETUP.EXE don&#039;t use resource files.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!EXE File!!Resource file!!Number of files!!File offsets!!File sizes!!File type&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot;|FRAME.EXE ||s&amp;amp;r4.res||135*||0x011A84||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r1.res|| 10*||0x01242C||   --   ||Cutscene Data?&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r2.res|| 10*||0x012454||   --   ||Cutscene Data?&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 44*||0x012700||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 33 ||0x012806||0x01288A||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE1.EXE||s&amp;amp;r4.res||120 ||0x012F9C||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 42 ||0x013DAA||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013EA8||0x013F34||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE2.EXE||s&amp;amp;r4.res||132 ||0x01305C||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x013E6A||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013FBC||0x014048||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE3.EXE||s&amp;amp;r4.res||120 ||0x012224||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 42 ||0x013028||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x013126||0x0131B2||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE4.EXE||s&amp;amp;r4.res||120 ||0x013994||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x0147D2||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x014924||0x0149B0||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE5.EXE||s&amp;amp;r4.res||133 ||0x0138C4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x0146D8||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x01482A||0x0148B6||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE6.EXE||s&amp;amp;r4.res||120 ||0x0121B4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 44*||0x012FCC||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x0130CA||0x013156||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE7.EXE||s&amp;amp;r4.res||120 ||0x013754||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x014558||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x0146AA||0x014736||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|STAGE9.EXE||s&amp;amp;r4.res||134 ||0x011CE4||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x012AFA||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x012C4C||0x012CD8||Sound Effects&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|TITLE.EXE ||s&amp;amp;r4.res||120 ||0x0088A6||   --   ||Sprites&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34 ||0x008F2A||   --   ||Music&lt;br /&gt;
|-&lt;br /&gt;
|                        s&amp;amp;r5.res|| 34*||0x00907C||0x009108||Sound Effects&lt;br /&gt;
|}&lt;br /&gt;
It should be noted that not all executables have full file tables. For example, &amp;lt;tt&amp;gt;TITLE.EXE&amp;lt;/tt&amp;gt; doesn&#039;t have all music offsets, but the SFX list is complete. &amp;lt;tt&amp;gt;FRAME.EXE&amp;lt;/tt&amp;gt; has all music offsets, but lacks one sound effect.&lt;br /&gt;
All complete tables are marked with a *.&lt;br /&gt;
&lt;br /&gt;
Sound Effects are raw 8-bit unsigned PCM. Music consists of IMS and BNK files.&lt;br /&gt;
&lt;br /&gt;
== List of files ==&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R1.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||887935||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x0D8C9F||333482||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x12A349||27524||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x130ECD||22472||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x136695||402640||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x198B65||137224||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x1BA36D||296062||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x2027EB||126749||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x221708||183262||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x24E2E6||143358||unknown||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R2.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||204805||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x032025||665605||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x0D482A||65413||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x0E47AF||422061||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x14B85C||363058||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x1A428E||237377||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x1DE1CF||446701||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x24B2BC||447507||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x2B86CF||66560||unknown||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x2C8ACF||189980||unknown||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R3.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||6752||Map Data||Title Screen&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001A80||16128||Map Data||Stage 1&lt;br /&gt;
|-&lt;br /&gt;
|2||0x005980||16128||Map Data||Stage 2&lt;br /&gt;
|-&lt;br /&gt;
|3||0x009880||14528||Map Data||Stage 3&lt;br /&gt;
|-&lt;br /&gt;
|4||0x00D140||16128||Map Data||Stage 4&lt;br /&gt;
|-&lt;br /&gt;
|5||0x011040||16128||Map Data||Stage 5&lt;br /&gt;
|-&lt;br /&gt;
|6||0x014F40||16128||Map Data||Stage 6&lt;br /&gt;
|-&lt;br /&gt;
|7||0x018E40||14368||Map Data||Stage 7&lt;br /&gt;
|-&lt;br /&gt;
|8||0x01C660||75904||Tile Data||Title Screen&lt;br /&gt;
|-&lt;br /&gt;
|9||0x02EEE0||216192||Tile Data||Stage 1&lt;br /&gt;
|-&lt;br /&gt;
|10||0x063B60||252032||Tile Data||Stage 2&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0A13E0||400768||Tile Data||Stage 3&lt;br /&gt;
|-&lt;br /&gt;
|12||0x103160||232064||Tile Data||Stage 4&lt;br /&gt;
|-&lt;br /&gt;
|13||0x13BBE0||173440||Tile Data||Stage 5&lt;br /&gt;
|-&lt;br /&gt;
|14||0x166160||236928||Tile Data||Stage 6&lt;br /&gt;
|-&lt;br /&gt;
|15||0x19FEE0||330368||Tile Data||Stage 7&lt;br /&gt;
|-&lt;br /&gt;
|16||0x1F0960||16896||Map Data||Stage 9&lt;br /&gt;
|-&lt;br /&gt;
|17||0x1F4B60||252032||Tile Data||Stage 9&lt;br /&gt;
|}&lt;br /&gt;
Since all of the offsets are hardcoded into the game executables, I searched for magic bytes.&lt;br /&gt;
Those were &amp;quot;Map File&amp;quot; and &amp;quot;Tile File&amp;quot; for map and tile data respectively. Both file types also contain the string &amp;quot;Innovation! 1994&amp;quot;.&lt;br /&gt;
In the &amp;lt;tt&amp;gt;STAGE#.EXE&amp;lt;/tt&amp;gt; files the offsets can be located by searching for the following magic bytes:&amp;lt;br/&amp;gt;&lt;br /&gt;
Map Data (4-byte offset): &amp;lt;tt&amp;gt;F8 89 46 F6 6A 00 66 68 xx xx xx xx&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Map Data (1-byte offset): &amp;lt;tt&amp;gt;F8 89 46 F6 6A 00 66 6A xx&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Tile Data (4-byte offset): &amp;lt;tt&amp;gt;FA 89 46 F8 6A 00 66 68 xx xx xx xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R4.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||11367||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x002C87||9268||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x0050BB||34823||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x00D8C2||25280||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x013B82||7640||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x01595A||14302||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x019138||28980||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x02026C||14448||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x023ADC||4435||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x024C2F||13515||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0280FA||10548||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x02AA2E||13956||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x02E0B2||5752||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x02F72A||10245||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x031F2F||3846||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x032E35||16144||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x036D45||11848||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x039B8D||7194||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x03B7A7||8642||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x03D969||13390||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x040DB7||12972||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x044063||6822||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x045B09||7216||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x047739||15168||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x04B279||40454||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x05507F||10136||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x057817||7347||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x0594CA||7566||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x05B258||5436||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x05C794||8796||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x05E9F0||9283||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x060E33||3717||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x061CB8||11706||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x064A72||13298||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x067E64||11108||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x06A9C8||3417||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x06B721||39070||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x074FBF||5588||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x076593||8923||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x07886E||5450||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x079DB8||11653||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x07CB3D||53464||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x089C15||11620||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x08C979||6494||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x08E2D7||3146||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x08EF21||20656||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x093FD1||1922||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x094753||17723||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x098C8E||8592||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x09AE1E||5013||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x09C1B3||34029||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x0A46A0||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x0AAE8D||4276||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x0ABF41||35885||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x0B4B6E||47021||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x0C031B||7005||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x0C1E78||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x0C8665||26605||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x0CEE52||34029||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x0D733F||1958||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x0D7AE5||3584||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x0D88E5||2789||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x0D93CA||7121||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0DAF9B||13715||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x0DE52E||21591||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x0E3985||9948||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0E6061||7054||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x0E7BEF||4680||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x0E8E37||3378||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x0E9B69||5103||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x0EAF58||6835||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0ECA0B||9360||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x0EEE9B||172253||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x118F78||147305||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x13CEE1||19053||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x14194E||1787||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x142049||1513||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x142632||4962||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x143994||10437||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|79||0x146259||6622||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|80||0x147C37||3464||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|81||0x1489BF||4085||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|82||0x1499B4||27629||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|83||0x1505A1||19785||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|84||0x1552EA||4164||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|85||0x15632E||17084||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|86||0x15A5EA||13467||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|87||0x15DA85||7184||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|88||0x15F695||44831||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|89||0x16A5B4||8968||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|90||0x16C8BC||63467||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|91||0x17C0A7||8856||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|92||0x17E33F||6715||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|93||0x17FD7A||4050||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|94||0x180D4C||1355||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|95||0x181297||12398||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|96||0x184305||16593||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|97||0x1883D6||108061||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|98||0x1A29F3||3604||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|99||0x1A3807||33899||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|100||0x1ABC72||16701||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|101||0x1AFDAF||63112||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|102||0x1BF437||9400||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|103||0x1C18EF||4269||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|104||0x1C299C||6613||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|105||0x1C4371||44437||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|106||0x1CF106||3259||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|107||0x1CFDC1||7243||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|108||0x1D1A0C||11166||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|109||0x1D45AA||48331||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|110||0x1E0275||3010||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|111||0x1E0E37||83755||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|112||0x1F5562||10248||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|113||0x1F7D6A||3729||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|114||0x1F8BFB||7018||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|115||0x1FA765||14275||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|116||0x1FDF28||3192||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|117||0x1FEBA0||8064||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|118||0x200B20||7931||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|119||0x202A1B||6108||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|120||0x2041F7||18091||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|121||0x2088A2||118034||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|122||0x2255B4||31292||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|123||0x22CFF0||1484||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|124||0x22D5BC||4637||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|125||0x22E7D9||7771||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|126||0x230634||3980||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|127||0x2315C0||27329||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|128||0x238081||11086||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|129||0x23ABCF||4631||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|130||0x23BDE6||1417||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|131||0x23C36F||16593||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|132||0x240440||33899||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|133||0x2488AB||39938||Sprite Data||&lt;br /&gt;
|-&lt;br /&gt;
|134||0x2524AD||8222||Sprite Data||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;S&amp;amp;R5.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||4609||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001221||4609||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002422||7759||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x004271||7759||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x0060C0||3735||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x006F57||11387||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x009BD2||6244||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x00B436||12243||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x00E409||7532||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x010175||14259||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x013928||6203||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x015163||19699||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x019E56||42261||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x02436B||6169||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x025B84||4318||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x026C62||3702||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x027AD8||7944||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x0299E0||2167||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x02A257||3006||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x02AE15||4667||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x02C050||7901||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x02DF2D||5982||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x02F68B||9396||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x031B3F||156577||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x057EE0||2715||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x05897B||2608||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x0593AB||3480||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x05A143||6480||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x05BA93||9771||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x05E0BE||2284||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x05E9AA||1435||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x05EF45||39331||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x0688E8||2177||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x069169||12701||PCM Sound Effect||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x06C306||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x06C862||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x06CDBE||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x06D31A||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x06D876||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x06DDD2||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x06E32E||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x06E88A||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x06EDE6||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x06F342||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x06F89E||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x06FDFA||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x070356||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x0708B2||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x070E0E||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x07136A||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x0718C6||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x071E22||14491||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x0756BD||2179||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x075F40||2416||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x0768B0||438||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x076A66||2836||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x07757A||9280||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x0799BA||4833||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x07AC9B||4013||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x07BC48||651||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x07BED3||9877||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x07E568||5364||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x07FA5C||6790||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0814E2||8586||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x08366C||7699||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x08547F||15395||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0890A2||9218||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x08B4A4||2843||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x08BFBF||6790||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x08DA45||15386||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x09165F||3413||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0923B4||9087||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x094733||7158||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x096329||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x096885||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x096DE1||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x09733D||4837||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x098622||1372||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x098B7E||210650||unknown||&lt;br /&gt;
|}&lt;br /&gt;
PCM Sound Effects are raw 8-bit unsigned, but end with a 00 byte like [[VOC Format|VOC Files]].&lt;br /&gt;
There is one Timbre Bank (BNK) file for each IMS song. The first BNK belongs to the first IMS, the second BNK to the second IMS, etc.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This file format was reverse engineered by [[User:ValleyBell|Valley Bell]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ArtCraft_Resource_File_Format&amp;diff=6792</id>
		<title>ArtCraft Resource File Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ArtCraft_Resource_File_Format&amp;diff=6792"/>
		<updated>2016-03-05T08:46:03Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: Initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Archive Infobox&lt;br /&gt;
 | MaxFiles = Set by FAT length&lt;br /&gt;
 | FAT = External&lt;br /&gt;
 | Names = Yes&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Subdirectories = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Encrypted = N&lt;br /&gt;
 | Hidden = N&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Lychnis}}&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;ArtCraft Resource File Format&#039;&#039;&#039; is used by games of the Korean developer Artcraft.&lt;br /&gt;
The format itself stores no offsets and/or file names. Instead, file tables are stored in the game EXE files.&lt;br /&gt;
&lt;br /&gt;
The format is very similar to [[SoftMax Resource File Format]], which is used in the later released game [[Sky &amp;amp; Rica]].&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
=== Signature ===&lt;br /&gt;
&lt;br /&gt;
Lychnis uses the following signature:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type!!Name!!Description&lt;br /&gt;
|-&lt;br /&gt;
|BYTE[0x20]||cSignature||&amp;quot;(C) ArtCraft Resource File&amp;quot; 0x1A 0x00*5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== FAT ===&lt;br /&gt;
The File Allocation Table is stored in the game executables.&lt;br /&gt;
&lt;br /&gt;
[[Lychnis]] separately stores a list of file names (13-character strings, NULL-terminated), a list of UINT32LE file offsets and a list of UINT32LE file sizes. The lists are stored consecutively and in that order. The main executable &amp;lt;tt&amp;gt;LYCHNIS.EXE&amp;lt;/tt&amp;gt; only contains a FAT for &amp;lt;tt&amp;gt;LYCHNIS2.RES&amp;lt;/tt&amp;gt;. The resource file itself contains other executables, which also only contain the FAT for one of the two resource files.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!EXE File!!Resource file!!Number of files!!File names!!File offsets!!File sizes&lt;br /&gt;
|-&lt;br /&gt;
|LYCHNIS.EXE||lychnis2.res||114||0x00ECC0||0x00F28A||0x00F452&lt;br /&gt;
|-&lt;br /&gt;
|LYCH1||lychnis1.res||226||0x014CD0||0x01584A||0x015BD2&lt;br /&gt;
|-&lt;br /&gt;
|LYCH1P||lychnis1.res||226||0x012D32||0x0138AC||0x013C34&lt;br /&gt;
|-&lt;br /&gt;
|LYCH2||lychnis1.res||226||0x016DEE||0x017968||0x017CF0&lt;br /&gt;
|-&lt;br /&gt;
|LYCH2P||lychnis1.res||226||0x01661C||0x017196||0x01751E&lt;br /&gt;
|-&lt;br /&gt;
|LYCH3||lychnis1.res||226||0x015564||0x0160DE||0x016466&lt;br /&gt;
|-&lt;br /&gt;
|LYCH3P||lychnis1.res||226||0x014D72||0x0158EC||0x015C74&lt;br /&gt;
|-&lt;br /&gt;
|LYCH4||lychnis1.res||226||0x01454E||0x0150C8||0x015450&lt;br /&gt;
|-&lt;br /&gt;
|LYCH5||lychnis1.res||226||0x014D70||0x0158EA||0x015C72&lt;br /&gt;
|-&lt;br /&gt;
|LYCHB6||lychnis2.res||114||0x00C8F8||0x00CEC2||0x00D08A&lt;br /&gt;
|-&lt;br /&gt;
|BONUS||lychnis1.res||226||0x01281C||0x013396||0x01371E&lt;br /&gt;
|}&lt;br /&gt;
The file tables match between all executables that use the same resource file.&lt;br /&gt;
&lt;br /&gt;
== List of files ==&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;LYCHNIS2.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Game executables can be renamed to .exe and executed directly. They read the configuration file &amp;lt;tt&amp;gt;LYCH.CFG&amp;lt;/tt&amp;gt; to get the level to load.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Filename!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||1372||MAP.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x00057C||1372||OPENING1.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x000AD8||1372||OPENING2.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x001034||1372||P-SELECT.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x001590||1372||SHOP.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x001AEC||1372||SLOT.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x002048||1372||STAFFROL.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x0025A4||1372||TITLE2.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x002B00||15497||MAP.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x006789||9028||OPENING1.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x008ACD||5150||OPENING2.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x009EEB||5184||P-SELECT.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00B32B||9532||SHOP.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D867||9395||SLOT.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00FD1A||20001||STAFFROL.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x014B3B||6596||TITLE2.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x0164FF||12583||DRAGON.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x019626||16566||ENDBACK.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x01D6DC||7529||LOGO.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x01F445||23289||MAP.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x024F3E||19887||OPBACK.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x029CED||14145||OPGONG.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x02D42E||14393||OPIRIS.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x030C67||7152||OPLYCH.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x032857||26316||PLS.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x038F23||36965||SHOP.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x041F88||41849||SLOTBOX.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x04C301||18666||STAFFB.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x050BEB||10158||TITLE1.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x053399||11358||TITLE2.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x055FF7||768||DRAGON.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x0562F7||768||ENDING.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x0565F7||768||LOGO.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x0568F7||768||MAP.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x056BF7||768||OPEN.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x056EF7||768||PLS.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x0571F7||768||SHOP.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x0574F7||768||SLOTBOX.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x0577F7||768||STAFFROL.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x057AF7||768||TITLE.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x057DF7||33418||CAST.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x060081||1581||CURSOR.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x0606AE||8197||ENDING.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x0626B3||1179||EYE.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x062B4E||13740||IRISTITL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x0660FA||9719||KA.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x0686F1||6067||LYCHTITL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x069EA4||3165||MAPFACE.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x06AB01||1526||MAPMARK.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x06B0F7||26795||NARR1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x0719A2||22665||NARR2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x07722B||14806||NARR3.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x07AC01||18584||NARR4.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x07F499||2064||NUMBER.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x07FCA9||11032||OPTION.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x0827C1||13260||OX.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x085B8D||33587||PLS.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x08DEC0||5187||ROCK.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x08F303||16277||SAKI.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x093298||4160||SHOPCOIN.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x0942D8||15214||SHOPFACE.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x097E46||29187||SHOPMSG.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x09F049||25144||SLOT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x0A5281||6476||SLOTNUM.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x0A6BCD||34564||STAFFROL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x0AF2D1||2316||T1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x0AFBDD||1204||T2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x0B0091||8937||TIT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x0B237A||3240||TIT2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x0B3022||8825||TIT3.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x0B529B||26018||WEAPON.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x0BB83D||4471||CHOICE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x0BC9B4||59631||LOGO.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x0CB2A3||1523||SELECT.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x0CB896||83066||BONUS||Game Executable||Bonus Stages&lt;br /&gt;
|-&lt;br /&gt;
|75||0x0DFD10||92462||LYCH1||Game Executable||Stages 1-x&lt;br /&gt;
|-&lt;br /&gt;
|76||0x0F663E||100940||LYCH2||Game Executable||Stages 2-x&lt;br /&gt;
|-&lt;br /&gt;
|77||0x10F08A||94658||LYCH3||Game Executable||Stages 3-x&lt;br /&gt;
|-&lt;br /&gt;
|78||0x12624C||90540||LYCH4||Game Executable||Stages 4-x&lt;br /&gt;
|-&lt;br /&gt;
|79||0x13C3F8||92622||LYCH5||Game Executable||Stages 5-x&lt;br /&gt;
|-&lt;br /&gt;
|80||0x152DC6||83048||LYCH1P||Game Executable||Stage 1-3 Demo Play (with Lychnis)&lt;br /&gt;
|-&lt;br /&gt;
|81||0x16722E||99264||LYCH2P||Game Executable||Stage 2-2 Demo Play (with Iris)&lt;br /&gt;
|-&lt;br /&gt;
|82||0x17F5EE||92950||LYCH3P||Game Executable||Stage 3-2 Demo Play (with Lychnis)&lt;br /&gt;
|-&lt;br /&gt;
|83||0x196104||768||STAGE5.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|84||0x196404||23859||ST6BS.PCX||[[PCX Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|85||0x19C137||9010||BING.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|86||0x19E469||15009||BOSSSLOT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|87||0x1A1F0A||6154||EFF1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|88||0x1A3714||2221||EFF2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|89||0x1A3FC1||17653||INFO6.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|90||0x1A84B6||28250||IRIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|91||0x1AF310||11760||ITEM15.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|92||0x1B2100||10307||ITEM2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|93||0x1B4943||30352||LYCHNIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|94||0x1BBFD3||8627||MOLEN31.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|95||0x1BE186||53463||NBOSS6.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|96||0x1CB25D||7707||NBOSS622.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|97||0x1CD078||4982||NUMBER2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|98||0x1CE3EE||5204||PPANG.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|99||0x1CF842||1372||CLEARSTG.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|100||0x1CFD9E||1372||FINALBOS.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|101||0x1D02FA||1372||CLEAR.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|102||0x1D0856||1372||GAMEOVER.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|103||0x1D0DB2||1496||CLEAR.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|104||0x1D138A||52550||FINALBOS.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|105||0x1DE0D0||3733||GAMEOVER.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|106||0x1DEF65||4161||ATTACK.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|107||0x1DFFA6||9783||BOMB.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|108||0x1E25DD||5621||DEFENCE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|109||0x1E3BD2||5379||ITEM2.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|110||0x1E50D5||1869||MAGIC1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|111||0x1E5822||15426||NPAUSE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|112||0x1E9464||2251||SWORD1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|113||0x1E9D2F||56368||LYCHB6||Game Executable||Final Boss&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table lists the contents of &amp;lt;tt&amp;gt;LYCHNIS1.RES&amp;lt;/tt&amp;gt;.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!File #!!Offset!!Size!!Filename!!Format!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000020||239||STEP.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|1||0x00010F||1523||SELECT.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|2||0x000702||1869||MAGIC1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|3||0x000E4F||2251||SWORD1.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|4||0x00171A||2797||BOPEN.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|5||0x002207||2968||ZZZ.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|6||0x002D9F||3296||ITEM.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|7||0x003A7F||4161||ATTACK.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|8||0x004AC0||4352||BIRD.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|9||0x005BC0||4471||CHOICE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|10||0x006D37||5379||ITEM2.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00823A||5503||XITEM.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0097B9||5621||DEFENCE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00ADAE||7047||COIN.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00C935||7476||1UP.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00E669||9783||BOMB.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010CA0||15426||NPAUSE.VOC||[[VOC Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|17||0x0148E2||4377||BALL.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|18||0x0159FB||2323||BAT1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|19||0x01630E||2339||BAT2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|20||0x016C31||12780||BEAR1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|21||0x019E1D||6658||CACTUS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|22||0x01B81F||6676||CACTUS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|23||0x01D233||3348||CONCH1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|24||0x01DF47||4095||CRAB1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|25||0x01EF46||4113||CRAB2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|26||0x01FF57||3518||CRAW1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|27||0x020D15||3444||CRAW2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|28||0x021A89||8730||EFF1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|29||0x023CA3||3253||EFF2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|30||0x024958||6296||FBIRD1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|31||0x0261F0||6442||FBIRD2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|32||0x027B1A||6965||FIRE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|33||0x02964F||6967||FIRE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|34||0x02B186||6202||FROG1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|35||0x02C9C0||6168||FROG2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|36||0x02E1D8||2755||GRASS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|37||0x02EC9B||2745||GRASS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|38||0x02F754||3130||HEDGEN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|39||0x03038E||2447||HEDGEN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|40||0x030D1D||3438||HORSE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|41||0x031A8B||3262||HORSE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|42||0x032749||5783||ICICLE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|43||0x033DE0||20713||INFO1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|44||0x038EC9||21209||INFO2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|45||0x03E1A2||20315||INFO3.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|46||0x0430FD||20430||INFO4.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|47||0x0480CB||20895||INFO5.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|48||0x04D26A||22068||INFOB.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|49||0x05289E||20525||IRIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|50||0x0578CB||20275||IRIS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|51||0x05C7FE||11949||ITEM11.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|52||0x05F6AB||11868||ITEM12.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|53||0x062507||12084||ITEM13.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|54||0x06543B||11929||ITEM14.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|55||0x0682D4||11760||ITEM15.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|56||0x06B0C4||11718||ITEM1B.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|57||0x06DE8A||10307||ITEM2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|58||0x0706CD||3614||LIEBOX1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|59||0x0714EB||3500||LIEBOX2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|60||0x072297||21479||LYCHNIS1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|61||0x07767E||22061||LYCHNIS2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|62||0x07CCAB||1437||MAGIC10.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|63||0x07D248||1476||MAGIC11.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|64||0x07D80C||1863||MAGIC12.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|65||0x07DF53||1941||MAGIC13.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|66||0x07E6E8||2524||MAGIC14.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|67||0x07F0C4||1575||MAGIC20.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|68||0x07F6EB||1542||MAGIC21.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|69||0x07FCF1||1919||MAGIC22.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|70||0x080470||2029||MAGIC23.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|71||0x080C5D||2714||MAGIC24.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|72||0x0816F7||3360||MOLEGHO1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|73||0x082417||3400||MOLEGHO2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|74||0x08315F||8224||MOLEN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|75||0x08517F||8496||MOLEN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|76||0x0872AF||8604||MOLEN21.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|77||0x08944B||9244||MOLEN22.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|78||0x08B867||8627||MOLEN31.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|79||0x08DA1A||8557||MOLEN32.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|80||0x08FB87||6175||MOLEN41.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|81||0x0913A6||6489||MOLEN42.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|82||0x092CFF||2274||MOUSE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|83||0x0935E1||2270||MOUSE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|84||0x093EBF||5558||MUSHN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|85||0x095475||5614||MUSHN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|86||0x096A63||4982||NUMBER2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|87||0x097DD9||5579||OWLN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|88||0x0993A4||6360||PELICAN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|89||0x09AC7C||6556||PELICAN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|90||0x09C618||10056||PENGUIN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|91||0x09ED60||9734||PENGUIN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|92||0x0A1366||6266||PUMPKIN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|93||0x0A2BE0||6256||PUMPKIN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|94||0x0A4450||1678||RAFT.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|95||0x0A4ADE||2989||RMOLE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|96||0x0A568B||2903||RMOLE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|97||0x0A61E2||3275||SALAMAN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|98||0x0A6EAD||3297||SALAMAN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|99||0x0A7B8E||2948||SCOLP1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|100||0x0A8712||2908||SCOLP2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|101||0x0A926E||4394||SKULL1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|102||0x0AA398||4394||SKULL2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|103||0x0AB4C2||3896||SNAIL1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|104||0x0AC3FA||3886||SNAIL2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|105||0x0AD328||5517||SNOWMAN1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|106||0x0AE8B5||5649||SNOWMAN2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|107||0x0AFEC6||4955||SPEAR1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|108||0x0B1221||4955||SPEAR2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|109||0x0B257C||1824||SWORD10.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|110||0x0B2C9C||1807||SWORD11.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|111||0x0B33AB||2496||SWORD12.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|112||0x0B3D6B||2536||SWORD13.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|113||0x0B4753||2945||SWORD14.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|114||0x0B52D4||3126||SWORD15.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|115||0x0B5F0A||1952||SWORD20.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|116||0x0B66AA||1933||SWORD21.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|117||0x0B6E37||2660||SWORD22.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|118||0x0B789B||2682||SWORD23.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|119||0x0B8315||3065||SWORD24.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|120||0x0B8F0E||3212||SWORD25.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|121||0x0B9B9A||2062||TRAIN.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|122||0x0BA3A8||7496||TREE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|123||0x0BC0F0||7470||TREE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|124||0x0BDE1E||5645||TURTLE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|125||0x0BF42B||5791||TURTLE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|126||0x0C0ACA||2673||VOLCANO.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|127||0x0C153B||9991||ZOMBIE1.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|128||0x0C3C42||10135||ZOMBIE2.SPR||[[NeoTouken Sprite Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|129||0x0C63D9||2555||BONUS1.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|130||0x0C6DD4||2589||BONUS2.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|131||0x0C77F1||542||BONUS3.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|132||0x0C7A0F||534||BONUS4.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|133||0x0C7C25||3342||ST1-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|134||0x0C8933||3505||ST1-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|135||0x0C96E4||3773||ST1-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|136||0x0CA5A1||3316||ST1-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|137||0x0CB295||4523||ST1-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|138||0x0CC440||4564||ST1-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|139||0x0CD614||4926||ST2-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|140||0x0CE952||4206||ST2-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|141||0x0CF9C0||4648||ST2-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|142||0x0D0BE8||4642||ST2-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|143||0x0D1E0A||4898||ST2-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|144||0x0D312C||4296||ST2-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|145||0x0D41F4||3100||ST3-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|146||0x0D4E10||2374||ST3-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|147||0x0D5756||4500||ST3-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|148||0x0D68EA||4572||ST3-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|149||0x0D7AC6||3676||ST3-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|150||0x0D8922||3619||ST3-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|151||0x0D9745||2999||ST4-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|152||0x0DA2FC||2658||ST4-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|153||0x0DAD5E||2305||ST4-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|154||0x0DB65F||1817||ST4-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|155||0x0DBD78||4032||ST4-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|156||0x0DCD38||4143||ST4-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|157||0x0DDD67||4087||ST5-1H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|158||0x0DED5E||3097||ST5-1N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|159||0x0DF977||1081||ST5-2H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|160||0x0DFDB0||1100||ST5-2N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|161||0x0E01FC||4854||ST5-3H.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|162||0x0E14F2||5055||ST5-3N.SCR||[[ArtCraft Script Format]]??||&lt;br /&gt;
|-&lt;br /&gt;
|163||0x0E28B1||768||STAGE1.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|164||0x0E2BB1||768||STAGE2.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|165||0x0E2EB1||768||STAGE3.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|166||0x0E31B1||768||STAGE4.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|167||0x0E34B1||768||STAGE5.PAL||6-bit [[VGA Palette]]||&lt;br /&gt;
|-&lt;br /&gt;
|168||0x0E37B1||22465||BONUSSTG.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|169||0x0E8F72||1496||CLEAR.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|170||0x0E954A||3733||GAMEOVER.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|171||0x0EA3DF||24704||LYCH0001.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|172||0x0F045F||31708||LYCH0002.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|173||0x0F803B||35483||LYCH0003.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|174||0x100AD6||34069||LYCH0004.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|175||0x108FEB||42622||LYCH0005.IMS||[[IMS Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|176||0x113669||1372||BONUSSTG.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|177||0x113BC5||1372||CLEAR.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|178||0x114121||1372||GAMEOVER.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|179||0x11467D||1372||LYCH0001.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|180||0x114BD9||1372||LYCH0002.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|181||0x115135||1372||LYCH0003.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|182||0x115691||1372||LYCH0004.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|183||0x115BED||1372||LYCH0005.BNK||[[AdLib Timbre Bank Format]]||&lt;br /&gt;
|-&lt;br /&gt;
|184||0x116149||24032||BONUS1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|185||0x11BF29||8032||BONUS2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|186||0x11DE89||4032||BONUS3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|187||0x11EE49||20032||BONUS4.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|188||0x123C89||10272||STAGE1-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|189||0x1264A9||64032||STAGE1-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|190||0x135EC9||32432||STAGE1-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|191||0x13DD79||50032||STAGE2-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|192||0x14A0E9||64032||STAGE2-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|193||0x159B09||40032||STAGE2-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|194||0x163769||42032||STAGE3-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|195||0x16DB99||64032||STAGE3-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|196||0x17D5B9||64032||STAGE3-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|197||0x18CFD9||60032||STAGE4-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|198||0x19BA59||64032||STAGE4-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|199||0x1AB479||48032||STAGE4-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|200||0x1B7019||20032||STAGE5-1.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|201||0x1BBE59||36032||STAGE5-2.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|202||0x1C4B19||24032||STAGE5-3.MAP||[[ArtCraft Level Map]]||&lt;br /&gt;
|-&lt;br /&gt;
|203||0x1CA8F9||131102||BONUS1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|204||0x1EA917||131102||BONUS2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|205||0x20A935||131102||BONUS3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|206||0x22A953||131102||BONUS4.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|207||0x24A971||131102||STAGE1-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|208||0x26A98F||131102||STAGE1-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|209||0x28A9AD||131102||STAGE1-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|210||0x2AA9CB||131102||STAGE2-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|211||0x2CA9E9||131102||STAGE2-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|212||0x2EAA07||131102||STAGE2-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|213||0x30AA25||131102||STAGE3-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|214||0x32AA43||131102||STAGE3-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|215||0x34AA61||131102||STAGE3-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|216||0x36AA7F||131102||STAGE4-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|217||0x38AA9D||131102||STAGE4-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|218||0x3AAABB||131102||STAGE4-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|219||0x3CAAD9||131102||STAGE5-1.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|220||0x3EAAF7||131102||STAGE5-2.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|221||0x40AB15||131102||STAGE5-3.DAT||[[ArtCraft Stage Tiles]]||&lt;br /&gt;
|-&lt;br /&gt;
|222||0x42AB33||15000||ST1-3N.MAC||Recorded keys for demo playback||&lt;br /&gt;
|-&lt;br /&gt;
|223||0x42E5CB||15000||ST2-2N.MAC||Recorded keys for demo playback||&lt;br /&gt;
|-&lt;br /&gt;
|224||0x432063||15000||ST3-2N.MAC||Recorded keys for demo playback||&lt;br /&gt;
|-&lt;br /&gt;
|225||0x435AFB||15000||ST4-1N.MAC||Recorded keys for demo playback||unused as there is no LYCH4P executable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This file format was reverse engineered by [[User:ValleyBell|Valley Bell]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=The_Settlers_II&amp;diff=6791</id>
		<title>The Settlers II</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=The_Settlers_II&amp;diff=6791"/>
		<updated>2016-03-05T08:40:31Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: add link for IFF XMidi files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = Edit&lt;br /&gt;
 | Sprites = Edit&lt;br /&gt;
 | Fullscreen =&lt;br /&gt;
 | Sound = Edit&lt;br /&gt;
 | Music = Edit&lt;br /&gt;
 | Text = Edit&lt;br /&gt;
 | Story = Edit&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Settlers II is a game made by German BlueByte GmbH and it was released in 1996. Mission CD with a map editor was released a few months later and finally a more complete Gold Edition in 1997.&lt;br /&gt;
&lt;br /&gt;
== Versions of the game ==&lt;br /&gt;
&lt;br /&gt;
There are a few versions of the game available out in the wild in various European languages. Most easily you can find English and German versions.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Version&lt;br /&gt;
! Language&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| v0.15&lt;br /&gt;
| German&lt;br /&gt;
| Beta&lt;br /&gt;
| Die Siedler II: Erste demo (first demo)&lt;br /&gt;
|-&lt;br /&gt;
| v0.16&lt;br /&gt;
| German&lt;br /&gt;
| Beta&lt;br /&gt;
| Die Siedler II: Erste demo (first demo)&lt;br /&gt;
|-&lt;br /&gt;
| v1.01&lt;br /&gt;
| English&lt;br /&gt;
| Demo&lt;br /&gt;
| The Settler II: Veni Vidi Vici, demo including intro video (50 MiB)&lt;br /&gt;
|-&lt;br /&gt;
| v1.02&lt;br /&gt;
| English&lt;br /&gt;
| Demo&lt;br /&gt;
| The Settlers II: Veni Vici Vici, demo without intro video (3.5 MiB)&lt;br /&gt;
|-&lt;br /&gt;
| v1.02&lt;br /&gt;
| English&lt;br /&gt;
| CD release&lt;br /&gt;
| The Settlers II: Veni Vidi Vici&lt;br /&gt;
|-&lt;br /&gt;
| v1.51&lt;br /&gt;
| English&lt;br /&gt;
| Demo&lt;br /&gt;
| The Settlers II: Mission CD&lt;br /&gt;
|-&lt;br /&gt;
| v1.51&lt;br /&gt;
| English&lt;br /&gt;
| Demo&lt;br /&gt;
| The Settlers II: Gold Edition (has less files than Mission CD; has some files that do not exist in Mission CD)&lt;br /&gt;
|-&lt;br /&gt;
| v1.51&lt;br /&gt;
| English &amp;amp; German&lt;br /&gt;
| Update&lt;br /&gt;
| The Settlers II: Veni Vidi Vici / Die Siedler II: Veni Vidi Vici update to v1.51; no map editor&lt;br /&gt;
|-&lt;br /&gt;
| v1.51&lt;br /&gt;
| German&lt;br /&gt;
| Update&lt;br /&gt;
| Die Siedler II: Mission Disk; full version of map editor included&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Oddly enough there are no demo versions available in German language, they appear to be released in English only. In the other hand the early betas (or &amp;quot;first demos&amp;quot;) are only available in German.&lt;br /&gt;
&lt;br /&gt;
Biggest difference between versions can be found in the map file format: before v1.51 the map data files are divided to multiple files, while in v1.51 a new map file format was introduced to make sharing of map editor files easier.&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.wld or *.swd&lt;br /&gt;
 | Format = [[WLD/SWD Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Map file / level&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.lst&lt;br /&gt;
 | Format = Settlers II archive&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Palette, sprites, icons, fonts, sound&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.dat + *.idx (+ *.fnt)&lt;br /&gt;
 | Format = Settlers II archive&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Sprites, icons, fonts&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.bob&lt;br /&gt;
 | Format = Settlers II sprites&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Carriers and jobs; all moving characters of the game&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.rtx&lt;br /&gt;
 | Format = Settlers II mission script&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background music&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.eng or *.ger&lt;br /&gt;
 | Format = Settlers II text&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Ingame strings&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = MASKS/MASKS000.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Very small file&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.rtx&lt;br /&gt;
 | Format = Settlers II mission script&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Sets players, resources, available houses, scripting, story progression&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = SNG_00##.DAT&lt;br /&gt;
 | Format = [[XMI Format|IFF XMidi]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background music&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = CONTI###.DAT&lt;br /&gt;
 | Format = Settlers II area index table&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Index for areas (land and water)&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = WORLD###.DAT&lt;br /&gt;
 | Format = Settlers II map data&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Container for 14 blocks of various map data&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = GOU#.DAT or GOURAUD#.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Color brightness map for gouraud shading (256 x 256 UInt8 table)&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.bbm&lt;br /&gt;
 | Format = [[LBM Format]] (compressed PBM)&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Terrain palettes&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.lbm&lt;br /&gt;
 | Format = [[LBM Format]] (compressed PBM)&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Full screen graphics or textures&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = DIR.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Savegame, unknown&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = MISSION.DAT&lt;br /&gt;
 | Format = Text file&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = 1 for available mission, 0 for unavailable mission&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = RES.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Savegame, unknown&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = CNTRL###.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Savegame, unknown&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = COMPY###.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Savegame, unknown&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = DESKT###.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Savegame, unknown&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = MAILS###.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Savegame sent mail data&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = TRANS###.DAT&lt;br /&gt;
 | Format = Custom&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Savegame transportation data&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
- [http://settlers.net/ Settlers II.net] contains a lot of information, downloads and tools for the game.&lt;br /&gt;
- [http://siedler25.org/ Return to the Roots] is an open source remake with internet multiplayer and new features.&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Shakii_The_Wolf&amp;diff=6790</id>
		<title>Shakii The Wolf</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Shakii_The_Wolf&amp;diff=6790"/>
		<updated>2016-03-05T08:39:32Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: identify Family Production music format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = Edit&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Shakii]], full title Shakii the Wolf is a platformer made by the Korean company Family Production released in 1996. Shakii, the king of the kingdom Shake was chased out of his land by the evil king, Midnight Sword. Shakii must defeat Midnight Sword&#039;s minions and eventually the evil king himself to return peace to his land.&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.cfg&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Game settings.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.pal&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| [[VGA_Palette | 6-bit VGA Palette]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.voc,*.eft&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| RIFF Wave, [[VOC_Format | Creative Voice File]] and raw 8-bit unsigned, 8000 sample rate sounds.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.bgf&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| BGE font file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.raw&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Raw VGA graphics.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fnt&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Fonts.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.bnk&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| [[BNK Format (Ad Lib)]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;SH_*.kpf,S-STOUT.KPF&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| [[IMS Format]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ST*.KPF,&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| KGE files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;STG#_*.KPF&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Stage Backgrounds.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.bun,*.mjd&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Family Production Frame File.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fx4&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| V4 Family Production Image Container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fx5&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| V5 Family Production Image Container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.map&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Shakii Map File.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.tad&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown, deals with stages.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.mbd&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown, deals with sprites.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.ind&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Index file, see [[Pee and Gity]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.epd&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown, deals with stages.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.dac&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Scene data.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.dat&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Raw storage of various filetypes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;FX3.dat&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Lists objects during game running.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.id&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Identification file, contains only &amp;quot;family&amp;quot; and many zeros.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Interesting Facts==&lt;br /&gt;
&lt;br /&gt;
- 16.EFT&#039;s header line is &amp;quot;Jeannie Blink&amp;quot; and is in fact that very sound from the TV series &amp;quot;I Dream of Jeannie&amp;quot;. It is also a Mac FSSD despite this being a PC-DOS title.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sidescroller]]&lt;br /&gt;
[[Category:Family Production]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Pee_and_Gity&amp;diff=6789</id>
		<title>Pee and Gity</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Pee_and_Gity&amp;diff=6789"/>
		<updated>2016-03-05T08:38:20Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: identify Family Production music format and add link for .voc files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = Edit&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Released in 1994, [[Pee And Gity]] is a brawler/beat em&#039; up with cutesy anthropomorphic animals. The key characters being Pee the Squirrel, and Gity the Snake. The story, though in Korean, seems to be that Pee and Gity&#039;s house has been ransacked by evil forces and when they go to investigate they are ambushed by the forces of an evil being known as Herus who proceeds to transport them around.&lt;br /&gt;
&lt;br /&gt;
There exists two versions of the game, Pee &amp;amp; Gity, and an updated version called Pee &amp;amp; Gity Special. The original featured more story elements but the Special version featured updated/added mechanics and some graphical tweaks.&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.cfg&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Game settings.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.hsv&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| [[VGA_Palette | 6-bit VGA Palette]] Container, programs like FileSplitter can break them into 768-byte chunks and recombine.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.dat&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Raw storage of various filetypes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.ind&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Index for raw storage *.dat files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.voc&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| Header is &amp;quot;Saintcom Voice File&amp;quot; but otherwise they are just usual [[VOC Format|VOC Files]] with dummied out version and checksum &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fx4&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| V4 Family Production Image Container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fsm&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFFFCC;&amp;quot;| [[ROL Format]] music.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fs2&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| [[BNK Format (Ad Lib)]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fbk&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| &amp;quot;Background Data&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.dac&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Scenes it seems in FX4 format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DAT and IND files ===&lt;br /&gt;
&lt;br /&gt;
Each DAT container has an index of the same name. Indexes are extremely simple:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT32LE]] || Pointer || States the end of previous file, start of next. 45 EF 00 00 = 0xEF45 or byte 61253 in DAT file.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pee and Gity Special ===&lt;br /&gt;
&lt;br /&gt;
Some changes occured in the formats used between the two versions, the affected formats were:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.voc&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| RIFF Wave, [[VOC_Format | Creative Voice File]], &amp;quot;Saintcom Voice File&amp;quot;, and raw.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.f&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Compressed graphics for maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.map&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Family Production Map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.dac&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Format changed, still seems to be scenes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.pcx&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| [[PCX Format]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fnt&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Font file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fsm&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| [[IMS Format]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Music Format Theory ===&lt;br /&gt;
&lt;br /&gt;
The presence of AdLib Visual Composer ROL files in the first Pee &amp;amp; Gity suggests that the Family Production Music format is based on the ROL format. Makes sense for the time as IMF was born in the same manner but unlike IMF, the instrument synthesis bank (BNK) remained separate.&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
[http://cd.textfiles.com/knowledgemedia/CONVRTR/MSDOS/ROL2CMF/ ROL2CMF] this command-line tool can convert ROL files to [[CMF Format]] but with seeming quality loss.&lt;br /&gt;
&lt;br /&gt;
I have made a VERY simple [http://pastebin.com/bJGbR00m QuickBMS] script for extracting most FX4 files from FX4.DAT. It doesn&#039;t snag the final file so far, however, but saves a lot of hex digging. The FX4s can be used in other Family Production titles but will naturally suffer color problems.&lt;br /&gt;
&lt;br /&gt;
[[Category:Brawler]]&lt;br /&gt;
[[Category:Family Production]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Eol!&amp;diff=6788</id>
		<title>Eol!</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Eol!&amp;diff=6788"/>
		<updated>2016-03-05T08:30:13Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: identify Family Production music files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = Edit&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Eol!]], full title Eol-ui Moheom (&#039;&#039;Eol&#039;s Adventure&#039;&#039;) is a platformer featuring a cutesy yellow creature named Eol, who one day, without warning, witnesses the world being split by an immense blast. This blast originating from a being known as Kare who too is of Eol&#039;s race. &lt;br /&gt;
&lt;br /&gt;
The game features some of the best mechanics of Family Production, featuring legitimate challenge, hit-detection, and more well-scripted bosses and enemies. Visually it offers some of the best and most colorful VGA graphics among other titles in its genre.&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.cfg&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Game settings.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.pal&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| [[VGA_Palette | 6-bit VGA Palette]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.emf&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| [[IMS Format]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;EOL.BNK&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| [[BNK Format (Ad Lib)]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fx5&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Family Production FX5 File.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.eft&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #CCFFCC;&amp;quot;| RIFF Wave, [[VOC_Format | Creative Voice File]] and raw 8-bit unsigned, 8000 sample rate sounds..&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.cap&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| A form of actor behavior (AI) script.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.fam&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Variable, but graphical and consists of scenes, including cutscenes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.mjd&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown but seemingly deals with multi-part enemies.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.mcd&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown, but deals with maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.img&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Seemingly Map Graphical Tiles.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.efp&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown, but deals with maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;DEFAULT.EBF&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;DEFAULT.HBF&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Unknown.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;*.DPP&amp;lt;/tt&amp;gt; &lt;br /&gt;
|style=&amp;quot;background: #FFCCCC;&amp;quot;| Dragon Patch file, handled by DPP.EXE. Otherwise, unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
- Object layout in stages are apparently hardcoded in the game executable EOL_GAME.EXE as no other file seemingly handle this function. However, overall level layout is handled by the MAP files. The setup thus far is unknown.&lt;br /&gt;
&lt;br /&gt;
[[Category:Sidescroller]]&lt;br /&gt;
[[Category:Family Production]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=IMS_Format&amp;diff=6787</id>
		<title>IMS Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=IMS_Format&amp;diff=6787"/>
		<updated>2016-03-05T08:28:23Z</updated>

		<summary type="html">&lt;p&gt;ValleyBell: Initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Music Infobox&lt;br /&gt;
 | Type = MIDI&lt;br /&gt;
 | Instruments = OPL&lt;br /&gt;
 | NumChannels = 9 or 11&lt;br /&gt;
 | NumTracks = 1&lt;br /&gt;
 | NumPatterns = 1&lt;br /&gt;
 | NumOrders = 0&lt;br /&gt;
 | Tags = Title&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Dragon Slayer: The Legend of Heroes}}&lt;br /&gt;
   {{Game|Eol!}}&lt;br /&gt;
   {{Game|Illusion Blaze}}&lt;br /&gt;
   {{Game|Iron Blood}}&lt;br /&gt;
   {{Game|Lychnis}}&lt;br /&gt;
   {{Game|Olmang Jolmang Paradise}}&lt;br /&gt;
   {{Game|Pee and Gity}}&lt;br /&gt;
   {{Game|Reon-ui Moheom}}&lt;br /&gt;
   {{Game|Shakii The Wolf}}&lt;br /&gt;
   {{Game|Sky &amp;amp; Rica}}&lt;br /&gt;
   {{Game|Vanslug: X Mission}}&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;IMS Format&#039;&#039;&#039; is an Ad Lib music format, based on the standard MIDI format. It is commonly seen in Korean DOS games.&lt;br /&gt;
&lt;br /&gt;
The format is very similar to the [[AdLib MIDI Format]], but has an additional instrument table appended.&lt;br /&gt;
The instruments themselves are stored in a separate instrument bank in [[AdLib Timbre Bank Format]].&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
The file consists of a MIDI part that mostly matches the AdLib MIDI Format v1.0 and an instrument table that tells the player what instruments are to be loaded.&lt;br /&gt;
&lt;br /&gt;
The instrument table is appended to the end of the MIDI data and has the following header:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| BYTE[2] || cSignature || 0x77 0x77 (&amp;quot;ww&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| UINT16LE || numInstruments || Number of instruments used by the song&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is followed by a list of instrument names, repeated &amp;lt;tt&amp;gt;numInstruments&amp;lt;/tt&amp;gt; times:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| char[9] || name || Instrument name - must be NULL-terminated&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of the instrument names refers to the name of an instrument of an external instrument bank.&lt;br /&gt;
&lt;br /&gt;
=== MIDI Commands ===&lt;br /&gt;
* Except for 8#, all commands match the [[AdLib MIDI Format]].&lt;br /&gt;
* As with usual MIDI files, the &amp;quot;running status&amp;quot; is supported for commands 8#..E#.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; |&lt;br /&gt;
! MIDI message !! Meaning !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|8# nn vv||Note Retrigger||Stops the current note, then plays a new note if (vv &amp;gt; 0)&lt;br /&gt;
|-&lt;br /&gt;
|9# nn vv||Note On||Plays a note (vv &amp;gt; 0) or stops it (vv = 0)&lt;br /&gt;
|-&lt;br /&gt;
|A# vv||Volume Change||Changes the volume of the current note (also works after Note Off)&lt;br /&gt;
|-&lt;br /&gt;
|B# xx xx||ignored||MIDI Control Change&lt;br /&gt;
|-&lt;br /&gt;
|C# ii||Instrument Change||references an instrument from the instrument table&lt;br /&gt;
|-&lt;br /&gt;
|D# xx||ignored||MIDI Channel Aftertouch&lt;br /&gt;
|-&lt;br /&gt;
|E# ll mm||Pitch Bend||usual MIDI pitch bend, usually in the range of 1 semitone up/down&lt;br /&gt;
|-&lt;br /&gt;
|F0 7F 00 ii ff F7||Tempo Change||new Tempo = Initial Tempo * (ii + ff/0x80)&lt;br /&gt;
|-&lt;br /&gt;
|F0 xx ... xx F7||ignored||MIDI SysEx (without length)&lt;br /&gt;
|-&lt;br /&gt;
|F8||Delay Overflow||causes a delay of 240 ticks&lt;br /&gt;
|-&lt;br /&gt;
|FC||Song End||stops the song or restarts it from the beginning if looping is enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=audio}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [http://ulisu.egloos.com/1236597 OCPlay]&lt;br /&gt;
| Platform = DOS&lt;br /&gt;
| canPlay = Yes&lt;br /&gt;
| canCreate = No&lt;br /&gt;
| canModify = No&lt;br /&gt;
| canExport = No&lt;br /&gt;
| canImport = No&lt;br /&gt;
| editHidden = No&lt;br /&gt;
| editMetadata = No&lt;br /&gt;
| notes = &lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:ValleyBell|Valley Bell]] from IMS songs used by [[Family Production]] games and by disassembling [[Lychnis]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
Also thanks to MaliceX for helping to identify games that use IMS songs.&lt;/div&gt;</summary>
		<author><name>ValleyBell</name></author>
	</entry>
</feed>