############################################################################### # # File: btimea.keg # # Description: # # This file contains the definition for The Data East Burgertime. # # Author: Kevin Brisley # ############################################################################### # # The name of the game. # BTimeA.Name: Burgertime (Data East) # # The number of FPS desired. # BTimeA.FramesPerSecond: 60 # # The history and anecdote files. # BTimeA.HistoryFile: btimea.his BTimeA.TalesFile: btimea.tal # # Address spaces. # BTimeA.NumSpaces: 1 # # The first address space is used by the Game CPU. It includes the following: # 0x00000-0x0FFFF (64K): Game RAM/ROM # 0x10000-0x107FF (2K): To store the map ROM # 0x10800-0x10800 (1Byte): To store the map number # BTimeA.Space1.Size: 0x10801 BTimeA.Space1.NumROMs: 5 BTimeA.Space1.ROM1.Description: aa04.9b @ 0x0C000 BTimeA.Space1.ROM2.Description: aa06.13b @ 0x0D000 BTimeA.Space1.ROM3.Description: aa05.10b @ 0x0E000 BTimeA.Space1.ROM4.Description: aa07.15b @ 0x0F000 BTimeA.Space1.ROM5.Description: aa03.6b @ 0x10000 BTimeA.Space1.NumPatchFiles: 1 BTimeA.Space1.PatchFile1: btimea.pch # # The second address space is 64K and is used by the Sound CPU. # This is currently not used. # #BTime.Space2.Size: 0x10000 #BTime.Space2.NumROMs: 1 #BTime.Space2.ROM1.Description: aa14.12h @ 0x0F000 # # The details on the loading/saving high scores. # BTimeA.HiScore.File: btimea.scr BTimeA.HiScore.CPU: 1 BTimeA.HiScore.Delay: 55800 BTimeA.HiScore.NumRanges: 2 BTimeA.HiScore.Range1.Location: 0x00036 BTimeA.HiScore.Range1.Length: 15 BTimeA.HiScore.Range2.Location: 0x00048 BTimeA.HiScore.Range2.Length: 15 # # CPUs. # BTimeA.NumCPUs: 1 # # CPU 1 (game). # BTimeA.CPU1.Description: Game BTimeA.CPU1.Type: 6502b BTimeA.CPU1.ClockSpeed: 1500000 BTimeA.CPU1.IntsPerFrame: 12 BTimeA.CPU1.Space: 1 # # CPU 2 (sound). # The sound CPU is currently not used. # #BTime.CPU2.Description: Sound #BTime.CPU2.Type: 6502 #BTime.CPU2.Space: 2 # # The number of inputs. # BTimeA.NumInputs: 5 BTimeA.Input1.Description: Player 1 Controls BTimeA.Input1.CPU: 1 BTimeA.Input1.Location: 0x04000 BTimeA.Input2.Description: Player 2 Controls BTimeA.Input2.CPU: 1 BTimeA.Input2.Location: 0x04001 BTimeA.Input3.Description: Coin Slot Controls BTimeA.Input3.CPU: 1 BTimeA.Input3.Location: 0x04002 BTimeA.Input4.Description: Dip Switches 1 BTimeA.Input4.CPU: 1 BTimeA.Input4.Location: 0x04003 BTimeA.Input5.Description: Dip Switches 2 BTimeA.Input5.CPU: 1 BTimeA.Input5.Location: 0x04004 # # The number of outputs. # BTimeA.NumOutputs: 5 BTimeA.Output1.Description: Coinbox Enable BTimeA.Output1.CPU: 1 BTimeA.Output1.WLocation: 0x04000 BTimeA.Output2.Description: Not Used BTimeA.Output2.CPU: 1 BTimeA.Output2.WLocation: 0x04001 BTimeA.Output3.Description: Unknown BTimeA.Output3.CPU: 1 BTimeA.Output3.WLocation: 0x04002 BTimeA.Output4.Description: Sound BTimeA.Output4.CPU: 1 BTimeA.Output4.WLocation: 0x04003 BTimeA.Output5.Description: Map Number BTimeA.Output5.CPU: 1 BTimeA.Output5.WLocation: 0x04004 BTimeA.Output5.Location: 0x10800 BTimeA.Output5.NumConversions: 7 BTimeA.Output5.ConversionList: 0x13, 0x00, \ 0x10, 0x01, \ 0x11, 0x02, \ 0x12, 0x03, \ 0x17, 0x04, \ 0x14, 0x05, \ 0x00, 0x07 # # The keys used in the game. # BTimeA.NumKeys: 15 # Player 1 Up. BTimeA.Key1.Key: KEY_UP BTimeA.Key1.Joy: JOY_UP BTimeA.Key1.Mask: 0x04 BTimeA.Key1.Input: 1 BTimeA.Key1.Default: Off/1 # Player 1 Down. BTimeA.Key2.Key: KEY_DOWN BTimeA.Key2.Joy: JOY_DOWN BTimeA.Key2.Mask: 0x08 BTimeA.Key2.Input: 1 BTimeA.Key2.Default: Off/1 # Player 1 Left. BTimeA.Key3.Key: KEY_LEFT BTimeA.Key3.Joy: JOY_LEFT BTimeA.Key3.Mask: 0x02 BTimeA.Key3.Input: 1 BTimeA.Key3.Default: Off/1 # Player 1 Right. BTimeA.Key4.Key: KEY_RIGHT BTimeA.Key4.Joy: JOY_RIGHT BTimeA.Key4.Mask: 0x01 BTimeA.Key4.Input: 1 BTimeA.Key4.Default: Off/1 # Player 1 Salt/Pepper. BTimeA.Key5.Key: KEY_SPACE BTimeA.Key5.Joy: JOY_B1 BTimeA.Key5.Mask: 0x10 BTimeA.Key5.Input: 1 BTimeA.Key5.Default: Off/1 # Player 2 Up. BTimeA.Key6.Key: KEY_W BTimeA.Key6.Mask: 0x04 BTimeA.Key6.Input: 2 BTimeA.Key6.Default: Off/1 # Player 2 Down. BTimeA.Key7.Key: KEY_S BTimeA.Key7.Mask: 0x08 BTimeA.Key7.Input: 2 BTimeA.Key7.Default: Off/1 # Player 2 Left. BTimeA.Key8.Key: KEY_A BTimeA.Key8.Mask: 0x02 BTimeA.Key8.Input: 2 BTimeA.Key8.Default: Off/1 # Player 2 Right. BTimeA.Key9.Key: KEY_D BTimeA.Key9.Mask: 0x01 BTimeA.Key9.Input: 2 BTimeA.Key9.Default: Off/1 # Player 2 Salt/Pepper. BTimeA.Key10.Key: KEY_P BTimeA.Key10.Mask: 0x10 BTimeA.Key10.Input: 2 BTimeA.Key10.Default: Off/1 # Coin Slot 1. BTimeA.Key11.Key: KEY_3 BTimeA.Key11.Joy: JOY_B2 BTimeA.Key11.Mask: 0x40 BTimeA.Key11.Input: 3 BTimeA.Key11.Default: Off/0 BTimeA.Key11.IValue: INT_NMI # Coin Slot 2. BTimeA.Key12.Key: KEY_4 BTimeA.Key12.Mask: 0x80 BTimeA.Key12.Input: 3 BTimeA.Key12.Default: Off/0 BTimeA.Key12.IValue: INT_NMI # 1 Player Start. BTimeA.Key13.Key: KEY_1 BTimeA.Key13.Joy: JOY_B3 BTimeA.Key13.Mask: 0x01 BTimeA.Key13.Input: 3 BTimeA.Key13.Default: Off/1 # 2 Player Start. BTimeA.Key14.Key: KEY_2 BTimeA.Key14.Joy: JOY_B4 BTimeA.Key14.Mask: 0x02 BTimeA.Key14.Input: 3 BTimeA.Key14.Default: Off/1 # Tilt (not sure what this is for but it goes into an endless loop if it is # set to 0). BTimeA.Key15.Key: KEY_T BTimeA.Key15.Mask: 0x04 BTimeA.Key15.Input: 3 BTimeA.Key15.Default: Off/1 # # The dip switches used in the game. # BTimeA.NumDips: 13 # First switch for credits based on coin slot 1. BTimeA.Dip1.Description: Coin Slot 1 (bit 1) BTimeA.Dip1.Mask: 0x01 BTimeA.Dip1.Input: 4 BTimeA.Dip1.Default: Off/1 # Second switch for credits based on coin slot 1. BTimeA.Dip2.Description: Coin Slot 1 (bit 2) BTimeA.Dip2.Mask: 0x02 BTimeA.Dip2.Input: 4 BTimeA.Dip2.Default: Off/1 # First switch for credits based on coin slot 2. BTimeA.Dip3.Description: Coin Slot 2 (bit 1) BTimeA.Dip3.Mask: 0x04 BTimeA.Dip3.Input: 4 BTimeA.Dip3.Default: Off/1 # Second switch for credits based on coin slot 2. BTimeA.Dip4.Description: Coin Slot 2 (bit 2) BTimeA.Dip4.Mask: 0x08 BTimeA.Dip4.Input: 4 BTimeA.Dip4.Default: Off/1 # First switch for diagnostic mode. BTimeA.Dip5.Description: Diagnostics (bit 1) BTimeA.Dip5.Mask: 0x10 BTimeA.Dip5.Input: 4 BTimeA.Dip5.Default: Off/1 # Second switch for diagnostic mode. BTimeA.Dip6.Description: Diagnostics (bit 2) BTimeA.Dip6.Mask: 0x20 BTimeA.Dip6.Input: 4 BTimeA.Dip6.Default: Off/1 # Cocktail/Upright part 1 BTimeA.Dip7.Description: Cocktail/Upright Controls (bit 1) BTimeA.Dip7.Mask: 0x40 BTimeA.Dip7.Input: 4 BTimeA.Dip7.Default: On/0 # Cocktail/Upright part 2 BTimeA.Dip8.Description: Cocktail/Upright Controls (bit 2) BTimeA.Dip8.Mask: 0x80 BTimeA.Dip8.Input: 4 BTimeA.Dip8.Default: On/0 # 3 or 5 chefs to start. BTimeA.Dip9.Description: Number of Chefs BTimeA.Dip9.Mask: 0x01 BTimeA.Dip9.Input: 5 BTimeA.Dip9.Default: Off/1 # First switch to determine when bonus chefs are awarded. BTimeA.Dip10.Description: Bonus Chef (bit 1) BTimeA.Dip10.Mask: 0x02 BTimeA.Dip10.Input: 5 BTimeA.Dip10.Default: Off/1 # Second switch to determine when bonus chefs are awarded. BTimeA.Dip11.Description: Bonus Chef (bit 2) BTimeA.Dip11.Mask: 0x04 BTimeA.Dip11.Input: 5 BTimeA.Dip11.Default: Off/1 # 4 or 6 pursuers. BTimeA.Dip12.Description: Number of Pursuers BTimeA.Dip12.Mask: 0x08 BTimeA.Dip12.Input: 5 BTimeA.Dip12.Default: Off/1 # Pepper awarded at end of level? BTimeA.Dip13.Description: End of Level Pepper BTimeA.Dip13.Mask: 0x10 BTimeA.Dip13.Input: 5 BTimeA.Dip13.Default: Off/1 # # The faked vblank. # BTimeA.VBlank.Use: Yes BTimeA.VBlank.Description: HV Blank BTimeA.VBlank.Input: 4 BTimeA.VBlank.Mask: 0x80 BTimeA.VBlank.Default: On # # Screen Resolution. # BTimeA.ScreenHeight: 256 BTimeA.ScreenWidth: 256 # # Graphics Sets. # BTimeA.NumGfxSets: 3 # # The first character set contains all of the foreground graphics including # text, burger pieces, etc. # BTimeA.GfxSet1.Width: 8 BTimeA.GfxSet1.Height: 8 BTimeA.GfxSet1.Number: 1024 BTimeA.GfxSet1.BPP: 3 BTimeA.GfxSet1.BPs: 0 65536 131072 BTimeA.GfxSet1.XBits: 0 8 16 24 32 40 48 56 BTimeA.GfxSet1.YBits: 7 6 5 4 3 2 1 0 BTimeA.GfxSet1.Increment: 64 BTimeA.GfxSet1.NumROMs: 6 BTimeA.GfxSet1.ROM1.Description: aa8.13k BTimeA.GfxSet1.ROM2.Description: aa9.15k BTimeA.GfxSet1.ROM3.Description: aa10.10k BTimeA.GfxSet1.ROM4.Description: aa11.12k BTimeA.GfxSet1.ROM5.Description: aa12.7k BTimeA.GfxSet1.ROM6.Description: aa13.9k # # The second character set contains the background map pieces. # BTimeA.GfxSet2.Width: 16 BTimeA.GfxSet2.Height: 16 BTimeA.GfxSet2.Number: 64 BTimeA.GfxSet2.BPP: 3 BTimeA.GfxSet2.BPs: 0 16384 32768 BTimeA.GfxSet2.XBits: 0 8 16 24 32 40 48 56 \ 64 72 80 88 96 104 112 120 BTimeA.GfxSet2.YBits: 7 6 5 4 3 2 1 0 \ 135 134 133 132 131 130 129 128 BTimeA.GfxSet2.Increment: 256 BTimeA.GfxSet2.NumROMs: 3 BTimeA.GfxSet2.ROM1.Description: aa02.4b BTimeA.GfxSet2.ROM2.Description: aa01.3b BTimeA.GfxSet2.ROM3.Description: aa00.1b # # The third character set contains the sprites. # BTimeA.GfxSet3.Width: 16 BTimeA.GfxSet3.Height: 16 BTimeA.GfxSet3.Number: 128 BTimeA.GfxSet3.BPP: 3 BTimeA.GfxSet3.BPs: 0 32768 65536 BTimeA.GfxSet3.XBits: 0 8 16 24 32 40 48 56 \ 64 72 80 88 96 104 112 120 BTimeA.GfxSet3.YBits: 7 6 5 4 3 2 1 0 \ 135 134 133 132 131 130 129 128 BTimeA.GfxSet3.Increment: 256 BTimeA.GfxSet3.NumROMs: 3 BTimeA.GfxSet3.ROM1.Description: aa8.13k BTimeA.GfxSet3.ROM2.Description: aa10.10k BTimeA.GfxSet3.ROM3.Description: aa12.7k # # Graphic Layers. # BTimeA.NumGfxLayers: 3 ############################################################################### # The first layer renders the background map graphics. # # This is done through hardware in the following manner: # # The map number is written to a hardware location which we store # in 0x10800. There is a map ROM which we store at 0x10000. The # map number is multiplied by 256 and this is used as an offset into # the map ROM to draw the map. The map consists of 256 characters # starting at this offset in the following arrangement (where o is the # offset): # # 0x10000+o 0x10001+o 0x10002+o ... 0x1000e+o 0x1000f+o # 0x10010+o 0x10011+o 0x10012+o ... 0x1001e+o 0x1001f+o # ... ... ... ... ... # 0x100f0+o 0x100f1+o 0x100f2+o ... 0x100fe+o 0x100ff+o ############################################################################### BTimeA.GfxLayer1.Lightweight: Yes BTimeA.GfxLayer1.Space: 1 BTimeA.GfxLayer1.GfxSet: 2 BTimeA.GfxLayer1.Palette: 2 BTimeA.GfxLayer1.Transparency: Off BTimeA.GfxLayer1.NumChars: 256 BTimeA.GfxLayer1.NumDirty: 1 BTimeA.GfxLayer1.Dirty1.Start: 0x10800 BTimeA.GfxLayer1.Dirty1.End: 0x10800 BTimeA.GfxLayer1.Dirty1.CharsPerLoc: 256 BTimeA.GfxLayer1.Dirty1.Assign: $ BTimeA.GfxLayer1.NumCharNums: 1 BTimeA.GfxLayer1.CharNum1.Value: @((0x10000 + #) + @0x10800 * 256) BTimeA.GfxLayer1.NumColours: 1 BTimeA.GfxLayer1.Colour1.Value: 0 BTimeA.GfxLayer1.NumXPoss: 1 BTimeA.GfxLayer1.XPos1.Value: (# % 16) * 16 BTimeA.GfxLayer1.NumYPoss: 1 BTimeA.GfxLayer1.YPos1.Value: (# / 16) * 16 ############################################################################### # The second layer renders the foreground characters (burger pieces, text, # etc.) # # There are two banks of video RAM starting at 0x01000 and 0x01400. # It is mapped as follows: # # (0x1400<<8)|0x1000 (0x1401<<8)|0x1001 ... (0x141f<<8)|0x101f # (0x1420<<8)|0x1020 (0x1421<<8)|0x1021 ... (0x143f<<8)|0x103f # ... ... ... # (0x17e0<<8)|0x13e0 (0x17e1<<8)|0x13e1 ... (0x173f<<8)|0x133f ############################################################################### BTimeA.GfxLayer2.Lightweight: Yes BTimeA.GfxLayer2.Space: 1 BTimeA.GfxLayer2.GfxSet: 1 BTimeA.GfxLayer2.Palette: 1 BTimeA.GfxLayer2.Transparency: On BTimeA.GfxLayer2.BlankChar: 0 BTimeA.GfxLayer2.NumChars: 1024 BTimeA.GfxLayer2.NumDirty: 1 BTimeA.GfxLayer2.Dirty1.Start: 0x1000 BTimeA.GfxLayer2.Dirty1.End: 0x17ff BTimeA.GfxLayer2.Dirty1.Assign: # % 0x400 BTimeA.GfxLayer2.NumCharNums: 1 BTimeA.GfxLayer2.CharNum1.Value: @(0x01400 + #) << 8 | @(0x01000 + #) BTimeA.GfxLayer2.NumColours: 1 BTimeA.GfxLayer2.Colour1.Value: 0 BTimeA.GfxLayer2.NumXPoss: 1 BTimeA.GfxLayer2.XPos1.Value: (# % 32) * 8 BTimeA.GfxLayer2.NumYPoss: 1 BTimeA.GfxLayer2.YPos1.Value: (# / 32) * 8 ############################################################################### # The third layer renders the sprites. # # The sprite RAM starts at 0x01800. There are 4 sequential bytes per # sprite and 8 sprites. The following describes the 4 bytes: # # 0 : bit 1 indicates horizontal flip. # 1 : Sprite Number # 2 : X Position (from the right of the screen) and enable. # 3 : Y Position. ############################################################################### BTimeA.GfxLayer3.Space: 1 BTimeA.GfxLayer3.GfxSet: 3 BTimeA.GfxLayer3.Palette: 1 BTimeA.GfxLayer3.Transparency: On BTimeA.GfxLayer3.NumChars: 8 BTimeA.GfxLayer3.NumDirty: 1 BTimeA.GfxLayer3.Dirty1.Start: 0x1800 BTimeA.GfxLayer3.Dirty1.End: 0x181f BTimeA.GfxLayer3.Dirty1.Assign: # / 4 BTimeA.GfxLayer3.NumCharNums: 1 BTimeA.GfxLayer3.CharNum1.Value: @(0x01801 + 4 * #) BTimeA.GfxLayer3.NumColours: 1 BTimeA.GfxLayer3.Colour1.Value: 0 BTimeA.GfxLayer3.NumXPoss: 1 BTimeA.GfxLayer3.XPos1.Value: 239 - @(0x01802 + 4 * #) BTimeA.GfxLayer3.NumYPoss: 1 BTimeA.GfxLayer3.YPos1.Value: @(0x01803 + 4 * #) BTimeA.GfxLayer3.NumEnables: 1 BTimeA.GfxLayer3.Enable1.Value: @(0x01802 + 4 * #) BTimeA.GfxLayer3.NumHFlips: 1 BTimeA.GfxLayer3.HFlip1.Value: @(0x01800 + 4 * #) & 0x02 BTimeA.GfxLayer3.NumVFlips: 1 BTimeA.GfxLayer3.VFlip1.Value: 0 # # Colour Palettes # BTimeA.NumPalettes: 2 BTimeA.Palette1.NumColours: 8 BTimeA.Palette1.MaxValue: 255 BTimeA.Palette1.Colour1.RGB: 0x00/0x00/0x00 BTimeA.Palette1.Colour2.RGB: 0xff/0xff/0xd1 BTimeA.Palette1.Colour3.RGB: 0xff/0xbe/0x00 BTimeA.Palette1.Colour4.RGB: 0xff/0xff/0x00 BTimeA.Palette1.Colour5.RGB: 0xff/0x00/0x00 BTimeA.Palette1.Colour6.RGB: 0x00/0xff/0x00 BTimeA.Palette1.Colour7.RGB: 0xd1/0x6f/0x00 BTimeA.Palette1.Colour8.RGB: 0x6f/0xbe/0x00 BTimeA.Palette2.NumColours: 8 BTimeA.Palette2.MaxValue: 255 BTimeA.Palette2.Colour1.RGB: 0x00/0x00/0x00 BTimeA.Palette2.Colour2.RGB: 0xbe/0xbe/0x90 BTimeA.Palette2.Colour3.RGB: 0x00/0xff/0xd1 BTimeA.Palette2.Colour4.RGB: 0x00/0x00/0xd1 BTimeA.Palette2.Colour5.RGB: 0xff/0xff/0x00 BTimeA.Palette2.Colour6.RGB: 0xff/0x00/0x00 BTimeA.Palette2.Colour7.RGB: 0xff/0xff/0x00 BTimeA.Palette2.Colour8.RGB: 0xff/0x00/0xd1