############################################################################### # # File: centiped.keg # # Description: # # This file contains the definition for Centipede. # # Author: Kevin Brisley # ############################################################################### # # The name of the game. # Centipede.Name: Centipede # # The desired FPS. # Centipede.FramesPerSecond: 60 # # The history and anecdote files. # Centipede.HistoryFile: centiped.his Centipede.TalesFile: centiped.tal # # Address spaces. # Centipede.NumSpaces: 1 # # The first address space is used by the Game CPU. It includes the following: # 0x00000-0x0FFFF (64K): Game RAM/ROM. # Centipede.Space1.Size: 0x10000 Centipede.Space1.NumROMs: 5 Centipede.Space1.ROM1.Description: centiped.307 @ 0x02000 Centipede.Space1.ROM2.Description: centiped.308 @ 0x02800 Centipede.Space1.ROM3.Description: centiped.309 @ 0x03000 Centipede.Space1.ROM4.Description: centiped.310 @ 0x03800 Centipede.Space1.ROM5.Description: centiped.310 @ 0x0f800 Centipede.Space1.NumPatchFiles: 1 Centipede.Space1.PatchFile1: centiped.pch # # CPUs. # Centipede.NumCPUs: 1 # # CPU 1 (game). # Centipede.CPU1.Description: Game Centipede.CPU1.Type: 6502 Centipede.CPU1.ClockSpeed: 1000000 Centipede.CPU1.Space: 1 Centipede.CPU1.IValue: INT_IRQ # # The number of inputs. # Centipede.NumInputs: 7 Centipede.Input1.Description: Trackball X Centipede.Input1.CPU: 1 Centipede.Input1.Location: 0x00c00 Centipede.Input1.Default: 0x60 Centipede.Input2.Description: Start Controls Centipede.Input2.CPU: 1 Centipede.Input2.Location: 0x00c01 Centipede.Input2.Default: 0xff Centipede.Input3.Description: Tackball Y Centipede.Input3.CPU: 1 Centipede.Input3.Location: 0x00c02 Centipede.Input3.Default: 0x00 Centipede.Input4.Description: Player Controls Centipede.Input4.CPU: 1 Centipede.Input4.Location: 0x00c03 Centipede.Input4.Default: 0xff Centipede.Input5.Description: Dip Switch 1 Centipede.Input5.CPU: 1 Centipede.Input5.Location: 0x00800 Centipede.Input5.Default: 0x54 Centipede.Input6.Description: Dip Switch 2 Centipede.Input6.CPU: 1 Centipede.Input6.Location: 0x00801 Centipede.Input6.Default: 0x02 Centipede.Input7.Description: Random Number Centipede.Input7.CPU: 1 Centipede.Input7.Location: 0x0100a Centipede.Input7.Random: 0-255 # # The number of outputs. # Centipede.NumOutputs: 0 # # The keys used in the game. # Centipede.NumKeys: 13 # Player 1 Fire Centipede.Key1.Key: KEY_SPACE Centipede.Key1.Joy: JOY_B1 Centipede.Key1.Mask: 0x04 Centipede.Key1.Input: 2 Centipede.Key1.Default: Off/1 # Player 1 Down Centipede.Key2.Key: KEY_DOWN Centipede.Key2.Joy: JOY_DOWN Centipede.Key2.Mask: 0x20 Centipede.Key2.Input: 4 Centipede.Key2.Default: Off/1 # Player 1 Up Centipede.Key3.Key: KEY_UP Centipede.Key3.Joy: JOY_UP Centipede.Key3.Mask: 0x10 Centipede.Key3.Input: 4 Centipede.Key3.Default: Off/1 # Player 1 Right Centipede.Key4.Key: KEY_RIGHT Centipede.Key4.Joy: JOY_RIGHT Centipede.Key4.Mask: 0x80 Centipede.Key4.Input: 4 Centipede.Key4.Default: Off/1 # Player 1 Left Centipede.Key5.Key: KEY_LEFT Centipede.Key5.Joy: JOY_LEFT Centipede.Key5.Mask: 0x40 Centipede.Key5.Input: 4 Centipede.Key5.Default: Off/1 # Player 1 Start Centipede.Key6.Key: KEY_1 Centipede.Key6.Mask: 0x01 Centipede.Key6.Input: 2 Centipede.Key6.Default: Off/1 # Coin 1 Centipede.Key7.Key: KEY_3 Centipede.Key7.Mask: 0x40 Centipede.Key7.Input: 2 Centipede.Key7.Default: Off/1 # Player 2 Fire Centipede.Key8.Key: KEY_A Centipede.Key8.Mask: 0x08 Centipede.Key8.Input: 2 Centipede.Key8.Default: Off/1 # Player 2 Down Centipede.Key9.Key: KEY_K Centipede.Key9.Mask: 0x02 Centipede.Key9.Input: 4 Centipede.Key9.Default: Off/1 # Player 2 Up Centipede.Key10.Key: KEY_I Centipede.Key10.Mask: 0x01 Centipede.Key10.Input: 4 Centipede.Key10.Default: Off/1 # Player 2 Right Centipede.Key11.Key: KEY_L Centipede.Key11.Mask: 0x08 Centipede.Key11.Input: 4 Centipede.Key11.Default: Off/1 # Player 2 Left Centipede.Key12.Key: KEY_J Centipede.Key12.Mask: 0x04 Centipede.Key12.Input: 4 Centipede.Key12.Default: Off/1 # Player 2 Start Centipede.Key13.Key: KEY_2 Centipede.Key13.Mask: 0x02 Centipede.Key13.Input: 2 Centipede.Key13.Default: Off/1 # # The dip switches used in the game. # Centipede.NumDips: 7 # Difficulty Centipede.Dip1.Description: Difficulty Centipede.Dip1.Mask: 0x40 Centipede.Dip1.Input: 5 Centipede.Dip1.Default: On/1 # Bonus Life (1 of 2) Centipede.Dip2.Description: Bonus Life (1 of 2) Centipede.Dip2.Mask: 0x20 Centipede.Dip2.Input: 5 Centipede.Dip2.Default: Off/0 # Bonus Life (2 of 2) Centipede.Dip3.Description: Bonus Life (2 of 2) Centipede.Dip3.Mask: 0x10 Centipede.Dip3.Input: 5 Centipede.Dip3.Default: On/1 # Number of Lives (1 of 2) Centipede.Dip4.Description: Number of Lives (1 of 2) Centipede.Dip4.Mask: 0x08 Centipede.Dip4.Input: 5 Centipede.Dip4.Default: Off/0 # Number of Lives (2 of 2) Centipede.Dip5.Description: Number of Lives (2 of 2) Centipede.Dip5.Mask: 0x04 Centipede.Dip5.Input: 5 Centipede.Dip5.Default: On/1 # Language (1 of 2) Centipede.Dip6.Description: Language (1 of 2) Centipede.Dip6.Mask: 0x02 Centipede.Dip6.Input: 5 Centipede.Dip6.Default: Off/0 # Language (2 of 2) Centipede.Dip7.Description: Language (2 of 2) Centipede.Dip7.Mask: 0x02 Centipede.Dip7.Input: 5 Centipede.Dip7.Default: Off/0 # # Screen Resolution. # Centipede.ScreenWidth: 256 Centipede.ScreenHeight: 256 # # Graphics Sets. # Centipede.NumGfxSets: 2 # # The first set contains the character set. # Centipede.GfxSet1.Width: 8 Centipede.GfxSet1.Height: 8 Centipede.GfxSet1.Number: 256 Centipede.GfxSet1.BPP: 2 Centipede.GfxSet1.BPs: 0 16384 Centipede.GfxSet1.XBits: 0 8 16 24 32 40 48 56 Centipede.GfxSet1.YBits: 7 6 5 4 3 2 1 0 Centipede.GfxSet1.Increment: 64 Centipede.GfxSet1.NumROMs: 2 Centipede.GfxSet1.ROM1.Description: centiped.211 Centipede.GfxSet1.ROM2.Description: centiped.212 # # The second set contains the sprites. # Centipede.GfxSet2.Width: 16 Centipede.GfxSet2.Height: 8 Centipede.GfxSet2.Number: 128 Centipede.GfxSet2.BPP: 2 Centipede.GfxSet2.BPs: 0 16384 Centipede.GfxSet2.XBits: 0 8 16 24 32 40 48 56 \ 64 72 80 88 96 104 112 120 Centipede.GfxSet2.YBits: 7 6 5 4 3 2 1 0 Centipede.GfxSet2.Increment: 128 Centipede.GfxSet2.NumROMs: 2 Centipede.GfxSet2.ROM1.Description: centiped.211 Centipede.GfxSet2.ROM2.Description: centiped.212 # # Graphic Layers # Centipede.NumGfxLayers: 2 ############################################################################### # The first layer renders the characters. # # The video RAM starts at 0x00400 and is mapped as follows: # # 0x07ff 0x07df 0x07bf ... 0x043f 0x041f # 0x07fe 0x07de 0x07be ... 0x043e 0x041e # ... ... ... ... ... # 0x07e0 0x07c0 0x07a0 ... 0x0420 0x0400 ############################################################################### Centipede.GfxLayer1.Lightweight: Yes Centipede.GfxLayer1.Space: 1 Centipede.GfxLayer1.GfxSet: 1 Centipede.GfxLayer1.Palette: 1 Centipede.GfxLayer1.ColourTable: 1 Centipede.GfxLayer1.Transparency: Off Centipede.GfxLayer1.Clipping: 8,247,0,255 Centipede.GfxLayer1.NumChars: 1024 Centipede.GfxLayer1.NumDirty: 1 Centipede.GfxLayer1.Dirty1.Start: 0x00400 Centipede.GfxLayer1.Dirty1.End: 0x007ff Centipede.GfxLayer1.Dirty1.CharsPerLoc: 1 Centipede.GfxLayer1.Dirty1.Assign: # Centipede.GfxLayer1.NumCharNums: 1 Centipede.GfxLayer1.CharNum1.Value: @(0x00400 + #) + 0x40 Centipede.GfxLayer1.NumColours: 1 Centipede.GfxLayer1.Colour1.Value: 0 Centipede.GfxLayer1.NumXPoss: 1 Centipede.GfxLayer1.XPos1.Value: (# / 32 + 1) * 8 Centipede.GfxLayer1.NumYPoss: 1 Centipede.GfxLayer1.YPos1.Value: (31 - # % 32) * 8 ############################################################################### # The second layer renders the sprites. # # The sprite RAM starts at 0x007c0. There are 16 sprites and 4 bytes per # sprite. The following indicate the usage: # # 0x07c0-0x07cf: sprite number. # 0x07d0-0x07df: X position. # 0x07e0-0x07ef: Y position. # 0x07f0-0x07ff: Colour (not currently used). ############################################################################### Centipede.GfxLayer2.Space: 1 Centipede.GfxLayer2.GfxSet: 2 Centipede.GfxLayer2.Palette: 1 Centipede.GfxLayer2.ColourTable: 1 Centipede.GfxLayer2.Clipping: 8,247,0,255 Centipede.GfxLayer2.Transparency: On Centipede.GfxLayer2.NumChars: 16 Centipede.GfxLayer2.NumDirty: 1 Centipede.GfxLayer2.Dirty1.Start: 0x007c0 Centipede.GfxLayer2.Dirty1.End: 0x007ff Centipede.GfxLayer2.Dirty1.CharsPerLoc: 1 Centipede.GfxLayer2.Dirty1.Assign: # % 16 Centipede.GfxLayer2.NumCharNums: 1 Centipede.GfxLayer2.CharNum1.Value: \ @(0x007c0 + #) & 0x01 ? \ (@(0x007c0 + #) & 0x3f) / 2 + 64 : (@(0x007c0 + #) & 0x3f) / 2 Centipede.GfxLayer2.NumColours: 1 Centipede.GfxLayer2.Colour1.Value: 0 Centipede.GfxLayer2.NumXPoss: 1 Centipede.GfxLayer2.XPos1.Value: 248 - @(0x007d0 + #) Centipede.GfxLayer2.NumYPoss: 1 Centipede.GfxLayer2.YPos1.Value: 248 - @(0x007e0 + #) Centipede.GfxLayer2.NumEnables: 1 Centipede.GfxLayer2.Enable1.Value: @(0x007e0 + #) < 0xf8 Centipede.GfxLayer2.NumHFlips: 1 Centipede.GfxLayer2.HFlip1.Value: @(0x007c0 + #) & 0x80 Centipede.GfxLayer2.NumVFlips: 1 Centipede.GfxLayer2.VFlip1.Value: 0 # # Colour Palettes # Centipede.NumPalettes: 1 Centipede.Palette1.NumColours: 16 Centipede.Palette1.MaxValue: 255 Centipede.Palette1.Colour1.RGB: 0x00/0x00/0x00 Centipede.Palette1.Colour2.RGB: 0x94/0x00/0xd8 Centipede.Palette1.Colour3.RGB: 0xd8/0x00/0x00 Centipede.Palette1.Colour4.RGB: 0xf8/0x64/0xd8 Centipede.Palette1.Colour5.RGB: 0x00/0xd8/0x00 Centipede.Palette1.Colour6.RGB: 0x00/0xf8/0xd8 Centipede.Palette1.Colour7.RGB: 0xd8/0xd8/0x94 Centipede.Palette1.Colour8.RGB: 0xd8/0xf8/0xd8 Centipede.Palette1.Colour9.RGB: 0xf8/0x94/0x44 Centipede.Palette1.Colour10.RGB: 0x00/0x00/0xd8 Centipede.Palette1.Colour11.RGB: 0xf8/0x00/0x00 Centipede.Palette1.Colour12.RGB: 0xff/0x00/0xff Centipede.Palette1.Colour13.RGB: 0x00/0xf8/0x00 Centipede.Palette1.Colour14.RGB: 0x00/0xff/0xff Centipede.Palette1.Colour15.RGB: 0xf8/0xf8/0x00 Centipede.Palette1.Colour16.RGB: 0xff/0xff/0xff # # The colour lookup table. # Centipede.NumColourTables: 1 Centipede.ColourTable1.NumEntries: 32 Centipede.ColourTable1.List: \ 0x00,0x02,0x09,0x06,0x00,0x0c,0x01,0x08, \ 0x00,0x04,0x02,0x0e,0x00,0x02,0x04,0x0b, \ 0x00,0x0e,0x04,0x0a,0x00,0x0c,0x08,0x0e, \ 0x00,0x07,0x0a,0x03,0x00,0x05,0x0a,0x07