├── .gitignore ├── README.md ├── SONLVL ├── Common │ ├── CaterkillerMappings.asm │ ├── EggPrison.xml │ ├── FireballSpawner.xml │ ├── Invisible lava marker map.bin │ ├── Invisible lava marker.xml │ ├── InvisibleBlock.cs │ ├── Monitor.xml │ ├── PointBonus.xml │ ├── Ring.cs │ ├── Spikes.xml │ ├── Spring.xml │ └── Switch.xml ├── GHZ │ ├── BreakableWall.xml │ ├── Bridge.cs │ ├── CollapsingCliff.xml │ ├── Newtron.xml │ ├── Platform.xml │ ├── SpikedPole.cs │ ├── SwingingPlatform.cs │ ├── WallBarrier.xml │ └── obj.ini ├── LZ │ ├── Block.xml │ ├── Bubbles.xml │ ├── ConveyorBelt.xml │ ├── Door.xml │ ├── FlappingDoor.xml │ ├── Harpoon.xml │ ├── Jaws.xml │ ├── MovingBlocks.xml │ ├── Orbinaut.xml │ ├── Pole.xml │ ├── Spikeball.cs │ ├── Waterfall.xml │ └── obj.ini ├── MZ │ ├── Brick.xml │ ├── LavaGeyser.xml │ ├── MZ Lava.bin │ ├── MovingBlocks.xml │ ├── MovingPlatform.xml │ ├── SidewaysStomper.cs │ ├── SmashableBlock.xml │ ├── SpikedWeight.xml │ ├── Switch.xml │ └── obj.ini ├── SBZ │ ├── BallHog.xml │ ├── ConveyerBelt.xml │ ├── ConveyerBeltMap.asm │ ├── Flamethrower.cs │ ├── MovingBlocks.xml │ ├── RotatingJunction.xml │ ├── RunningDisc.xml │ ├── SBZ Horizontal Door map.asm │ ├── Saws.xml │ ├── SpinningPlatform.xml │ ├── Stomper.xml │ ├── SwingingSpikeball.cs │ └── obj.ini ├── SLZ │ ├── CirclingPlatform.xml │ ├── Elevator.xml │ ├── Fan.xml │ ├── Orbinaut.xml │ ├── Platform.xml │ ├── Seesaw.xml │ ├── Stairs.xml │ ├── SwingingPlatform.cs │ └── obj.ini ├── SYZ │ ├── BigSpikedBall.cs │ ├── Block.cs │ ├── Platform.xml │ ├── SpikeballChain.cs │ └── obj.ini ├── SonLVL.ini └── obj.ini ├── build.bat ├── diff.bat ├── levels ├── GHZ │ ├── BallHog │ │ ├── Cannonball.map │ │ ├── CannonballExplode.map │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── Boss │ │ ├── Ball.map │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── Bridge │ │ └── Sprite.map │ ├── Buzzbomber │ │ ├── Missile.ani │ │ ├── Missile.map │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── Chopper │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── CollapseFloor │ │ └── Sprite.map │ ├── CollapsePtfm │ │ └── Sprite.map │ ├── Crabmeat │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── Motobug │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── MovingPtfm │ │ └── Sprite.map │ ├── Newtron │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── PurpleRock │ │ └── Sprite.map │ ├── RollingBall │ │ └── Sprite.map │ ├── SmashBlock │ │ └── Sprite.map │ ├── SmashWall │ │ └── Sprite.map │ ├── SpikeLogs │ │ └── Sprite.map │ └── Wall │ │ └── Sprite.map ├── LZ │ ├── Burrobot │ │ ├── Sprite.ani │ │ └── Sprite.map │ └── Jaws │ │ ├── Sprite.ani │ │ └── Sprite.map ├── MZ │ ├── Basaran │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── Blocks │ │ └── Sprite.map │ ├── ChainPtfm │ │ └── Sprite.map │ ├── FloorLavaball │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── GlassBlock │ │ └── Sprite.map │ ├── LavaBall │ │ └── Sprite.ani │ ├── LavaChase │ │ ├── Sprite.ani │ │ └── Sprite.map │ ├── LavaFall │ │ ├── Maker.ani │ │ └── Sprite.map │ ├── LavaHurt │ │ └── Sprite.map │ ├── Platform │ │ └── Sprite.map │ └── PushBlock │ │ └── Sprite.map ├── SLZ │ ├── CirclePtfm │ │ └── Sprite.map │ ├── Fan │ │ └── Sprite.map │ ├── Girder │ │ └── Sprite.map │ ├── MovingPtfm │ │ └── Srite.map │ ├── Seesaw │ │ └── Sprite.map │ └── StaircasePtfm │ │ └── Sprite.map ├── SYZ │ ├── Bumper │ │ ├── Sprite.ani │ │ └── Sprite.map │ └── SceneryLamp │ │ └── Sprite.map └── shared │ ├── Animals │ ├── 1.map │ ├── 2.map │ └── 3.map │ ├── Capsule │ ├── Sprite.ani │ └── Sprite.map │ ├── Explosion │ ├── Bomb.map │ └── Sprite.map │ ├── GameOver │ └── Sprite.map │ ├── HUD │ └── Sprite.map │ ├── LevelResults │ └── Sprite.map │ ├── Monitors │ ├── Sprite.ani │ └── Sprite.map │ ├── MovingBlocks │ └── Sprite.map │ ├── Platform │ ├── 1.map │ ├── 2.map │ └── 3.map │ ├── Points │ └── Sprite.map │ ├── Rings │ ├── Sprite.ani │ └── Sprite.map │ ├── Roller │ ├── Sprite.ani │ └── Sprite.map │ ├── Scenery │ └── Sprite.map │ ├── Shield │ ├── Shield.ani │ └── Shield.map │ ├── Signpost │ ├── Sprite.ani │ └── Sprite.map │ ├── Sonic │ ├── Srite.ani │ ├── dynamic.map │ └── sprite.map │ ├── SpecialRing │ ├── Sprite.ani │ └── Sprite.map │ ├── Spikes │ └── Sprite.map │ ├── Spring │ ├── Sprite.ani │ └── Sprite.map │ ├── SwingPtfm │ ├── Main.map │ └── SYZ.map │ ├── Switch │ └── Sprite.map │ ├── TitleCard │ └── Sprite.map │ └── Yadrin │ ├── Sprite.ani │ └── Sprite.map ├── macros.asm ├── main.asm ├── process.bat ├── screens └── title │ ├── TitleSonic │ ├── Sprite.ani │ └── Sprite.map │ └── TitleText │ ├── Sprite.ani │ └── Sprite.map ├── sound └── z80 │ ├── DAC Driver.asm │ ├── DAC Driver.i64 │ ├── Kick.dpcm │ ├── Snare.dpcm │ └── Timpani.dpcm ├── split.bat ├── test.bat ├── tools ├── ASM68K.EXE ├── DisasmProcess.exe ├── LANG.ASM ├── SplitROM.exe ├── VBinDiff.exe ├── fixheadr.exe ├── s1proto.i64 └── s1proto.txt ├── unknown ├── 05BD2.map ├── 06526.map ├── Map02.map ├── Map05.map ├── Map2A.map ├── Map45.map ├── Map4B.map └── Map4F.map └── unsorted ├── MapGiantSpikedBalls.map ├── MapSpikedBalls.map └── Uknown Switch.map /.gitignore: -------------------------------------------------------------------------------- 1 | *.md 2 | *.lst 3 | *.dat 4 | *.unc 5 | *.nem 6 | *.kos 7 | *.eni 8 | *.ssf 9 | *.pal 10 | *.blk 11 | *.log 12 | SONLVL/dllcache/* 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sonic 1 Prototype 2 | Research disassembly of the Sonic 1 prototype that was released by Hidden Palace on December 31st, 2020. 3 | ## Contribution notes 4 | * To edit the assembly code, use IDA pro 7.2 and do your changes there, that way they can be backed up easier. There are a few misceelaneous commands for the processor. Output your file via the LST file format to tools/s1proto.lst. Run text.bat to ensure bit perfectness (press enter to go to next error, if you find the end of file, it is perfect). 5 | * To edit the file names for split files, open tools/s1proto.txt and edit the appropriate lines, or add new files in sequentially, making sure you also have specified the end of the file range. See the file for examples. Run test.bat so that all the files will update and you can check for bit perfectness. 6 | * Please ensure that before you submit a pull request, that you have pulled the latest version from the main repository and resolved any merge conflicts! 7 | * You can also come discuss this project in our Discord at http://dc.megadrive.dev/ 8 | 9 | ## Hacking notes 10 | * To start your hack, run the diff.bat script, to split tools/s1proto.md into the individual data files 11 | * Edit your data or code, and run build.bat to build out.md, or any error and log files in case there is a mistake 12 | * All sound related data is in the sound folder, levels has both level data and level related objects, screens has most data to do with the SEGA screen, title screen and Special Stage 13 | * SONLVL folder has all the sonlvl related data, which allows you to edit levels with the SONLVL program 14 | * unknown and unsorted has various misc files that have yet not been relocated or identified. 15 | * tools folder has a few different things. Usually for hacking you don't need to touch this. Just be aware to not delete this folder. 16 | * diff.bat, test.bat, process.bat and split.bat are not needed after initially running split.bat! 17 | 18 | ## Credits 19 | * drx & Hidden Palace - Prototype release 20 | * Aurora Fields - Project lead, tool programming, documentation 21 | * RepellantMold - DAC driver disassembly, documentation 22 | * DeltaWooloo - Documentation 23 | * Jorge - Additional help 24 | * Mega Drive Developers Collective - Project host 25 | -------------------------------------------------------------------------------- /SONLVL/Common/CaterkillerMappings.asm: -------------------------------------------------------------------------------- 1 | ; -------------------------------------------------------------------------------- 2 | ; Sprite mappings - output from SonMapEd - Sonic 1 format 3 | ; -------------------------------------------------------------------------------- 4 | 5 | SME_iiQXV: 6 | dc.w SME_iiQXV_2-SME_iiQXV 7 | SME_iiQXV_2: dc.b 4 8 | dc.b $F9, 6, 0, 6, $F6 9 | dc.b 4, 5, 0, $C, 0 10 | dc.b 1, 5, 0, $C, $B 11 | dc.b 4, 5, 0, $C, $16 12 | even -------------------------------------------------------------------------------- /SONLVL/Common/EggPrison.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /SONLVL/Common/FireballSpawner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /SONLVL/Common/Invisible lava marker map.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/SONLVL/Common/Invisible lava marker map.bin -------------------------------------------------------------------------------- /SONLVL/Common/Invisible lava marker.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /SONLVL/Common/InvisibleBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Drawing; 5 | using SonicRetro.SonLVL.API; 6 | 7 | namespace S1ObjectDefinitions.Common 8 | { 9 | class InvisibleBlock : ObjectDefinition 10 | { 11 | private Sprite img; 12 | 13 | public override void Init(ObjectData data) 14 | { 15 | byte[] artfile = ObjectHelper.OpenArtFile("../artnem/monitors.bin", CompressionType.Nemesis); 16 | img = ObjectHelper.MapASMToBmp(artfile, "../_maps/obj71.asm", 0, 0); 17 | } 18 | 19 | public override ReadOnlyCollection Subtypes 20 | { 21 | get { return new ReadOnlyCollection(new byte[] { 0 }); } 22 | } 23 | 24 | public override string Name 25 | { 26 | get { return "Invisible solid block"; } 27 | } 28 | 29 | public override bool RememberState 30 | { 31 | get { return false; } 32 | } 33 | 34 | public override string SubtypeName(byte subtype) 35 | { 36 | return ((subtype >> 4) + 1) + "x" + ((subtype & 0xF) + 1) + " blocks"; 37 | } 38 | 39 | public override Sprite Image 40 | { 41 | get { return img; } 42 | } 43 | 44 | public override Sprite SubtypeImage(byte subtype) 45 | { 46 | return img; 47 | } 48 | 49 | public override Sprite GetSprite(ObjectEntry obj) 50 | { 51 | int w = ((obj.SubType >> 4) + 1) * 16; 52 | int h = ((obj.SubType & 0xF) + 1) * 16; 53 | BitmapBits bmp = new BitmapBits(w, h); 54 | bmp.DrawRectangle(0x1C, 0, 0, w - 1, h - 1); 55 | return new Sprite(new Sprite(bmp, new Point(-(w / 2), -(h / 2))), img); 56 | } 57 | 58 | public override bool Debug { get { return true; } } 59 | 60 | private PropertySpec[] customProperties = new PropertySpec[] { 61 | new PropertySpec("Width", typeof(int), "Extended", null, null, GetWidth, SetWidth), 62 | new PropertySpec("Height", typeof(int), "Extended", null, null, GetHeight, SetHeight) 63 | }; 64 | 65 | public override PropertySpec[] CustomProperties 66 | { 67 | get 68 | { 69 | return customProperties; 70 | } 71 | } 72 | 73 | private static object GetWidth(ObjectEntry obj) 74 | { 75 | return (obj.SubType & 0xF0) >> 4; 76 | } 77 | 78 | private static void SetWidth(ObjectEntry obj, object value) 79 | { 80 | obj.SubType = (byte)((Math.Min((int)value, 0xF) << 4) | (obj.SubType & 0xF)); 81 | } 82 | 83 | private static object GetHeight(ObjectEntry obj) 84 | { 85 | return obj.SubType & 0xF; 86 | } 87 | 88 | private static void SetHeight(ObjectEntry obj, object value) 89 | { 90 | obj.SubType = (byte)(Math.Min((int)value, 0xF) | (obj.SubType & 0xF0)); 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /SONLVL/Common/Monitor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /SONLVL/Common/PointBonus.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SONLVL/Common/Spikes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /SONLVL/Common/Spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /SONLVL/Common/Switch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /SONLVL/GHZ/BreakableWall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /SONLVL/GHZ/Bridge.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using SonicRetro.SonLVL.API; 6 | 7 | namespace S1ObjectDefinitions.GHZ 8 | { 9 | class Bridge : ObjectDefinition 10 | { 11 | private Sprite img; 12 | 13 | public override void Init(ObjectData data) 14 | { 15 | byte[] artfile = ObjectHelper.OpenArtFile("../levels/GHZ/Bridge/Art.nem", CompressionType.Nemesis); 16 | img = ObjectHelper.MapASMToBmp(artfile, "../levels/GHZ/Bridge/Sprite.map", 0, 2); 17 | } 18 | 19 | public override ReadOnlyCollection Subtypes 20 | { 21 | get { return new ReadOnlyCollection(new byte[] { 8, 10, 12, 14, 16 }); } 22 | } 23 | 24 | public override string Name 25 | { 26 | get { return "Bridge"; } 27 | } 28 | 29 | public override bool RememberState 30 | { 31 | get { return false; } 32 | } 33 | 34 | public override byte DefaultSubtype { get { return 8; } } 35 | 36 | public override string SubtypeName(byte subtype) 37 | { 38 | return (subtype & 0x1F) + " logs"; 39 | } 40 | 41 | public override Sprite Image 42 | { 43 | get { return img; } 44 | } 45 | 46 | public override Sprite SubtypeImage(byte subtype) 47 | { 48 | return img; 49 | } 50 | 51 | public override Sprite GetSprite(ObjectEntry obj) 52 | { 53 | int st = -(((obj.SubType & 0x1F) * img.Width) / 2); 54 | List sprs = new List(); 55 | for (int i = 0; i < (obj.SubType & 0x1F); i++) 56 | { 57 | Sprite tmp = new Sprite(img); 58 | tmp.Offset(st + (i * img.Width), 0); 59 | sprs.Add(tmp); 60 | } 61 | return new Sprite(sprs.ToArray()); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /SONLVL/GHZ/CollapsingCliff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SONLVL/GHZ/Newtron.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SONLVL/GHZ/Platform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /SONLVL/GHZ/SpikedPole.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.ComponentModel; 5 | using System.Drawing; 6 | using SonicRetro.SonLVL.API; 7 | 8 | namespace S1ObjectDefinitions.GHZ 9 | { 10 | class SpikedPole : ObjectDefinition 11 | { 12 | private List imgs = new List(); 13 | 14 | public override void Init(ObjectData data) 15 | { 16 | byte[] artfile = ObjectHelper.OpenArtFile("../levels/GHZ/SpikeLogs/Art.nem", CompressionType.Nemesis); 17 | for (int i = 0; i < 8; i++) 18 | { 19 | imgs.Add(ObjectHelper.MapASMToBmp(artfile, "../levels/GHZ/SpikeLogs/Sprite.map", i, 2)); 20 | } 21 | } 22 | 23 | public override ReadOnlyCollection Subtypes 24 | { 25 | get { return new ReadOnlyCollection(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 }); } 26 | } 27 | 28 | public override string Name 29 | { 30 | get { return "Helix of spikes on a pole"; } 31 | } 32 | 33 | public override bool RememberState 34 | { 35 | get { return false; } 36 | } 37 | 38 | public override byte DefaultSubtype { get { return 0x10; } } 39 | 40 | public override string SubtypeName(byte subtype) 41 | { 42 | return Math.Min(0x16, (int)subtype) + " spikes"; 43 | } 44 | 45 | public override Sprite Image 46 | { 47 | get { return imgs[0]; } 48 | } 49 | 50 | public override Sprite SubtypeImage(byte subtype) 51 | { 52 | return imgs[0]; 53 | } 54 | 55 | public override Sprite GetSprite(ObjectEntry obj) 56 | { 57 | List sprs = new List(); 58 | int spikeoffset = Math.Min(0x16, (int)obj.SubType) << 3; 59 | for (int i = 0; i < Math.Min(0x16, (int)obj.SubType); i++) 60 | { 61 | Sprite tmp = new Sprite(imgs[i & 7]); 62 | tmp.Offset(-spikeoffset, 0); 63 | sprs.Add(tmp); 64 | spikeoffset -= 0x10; 65 | } 66 | return new Sprite(sprs.ToArray()); 67 | } 68 | 69 | private PropertySpec[] customProperties = new PropertySpec[] { 70 | new PropertySpec("Spikes", typeof(int), "Extended", null, null, GetSpikes, SetSpikes), 71 | }; 72 | 73 | public override PropertySpec[] CustomProperties 74 | { 75 | get 76 | { 77 | return customProperties; 78 | } 79 | } 80 | 81 | private static object GetSpikes(ObjectEntry obj) 82 | { 83 | return Math.Min(0x16, (int)obj.SubType); 84 | } 85 | 86 | private static void SetSpikes(ObjectEntry obj, object value) 87 | { 88 | obj.SubType = (byte)(Math.Max(1, (Math.Min(0x16, (int)value)))); 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /SONLVL/GHZ/SwingingPlatform.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Drawing; 5 | using SonicRetro.SonLVL.API; 6 | 7 | namespace S1ObjectDefinitions.GHZ 8 | { 9 | class SwingingPlatform : ObjectDefinition 10 | { 11 | private int[] labels = { 0, 1, 2 }; 12 | private Sprite imgwreckingball; 13 | private List imgs = new List(); 14 | 15 | public override void Init(ObjectData data) 16 | { 17 | imgwreckingball = ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/ghzball.bin", CompressionType.Nemesis), "../_maps/obj48.asm", 1, 2); 18 | for (int i = 0; i < labels.Length; i++) 19 | imgs.Add(ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/ghzswing.bin", CompressionType.Nemesis), "../_maps/obj15ghz.asm", labels[i], i == 1 ? 0 : 2)); 20 | } 21 | 22 | public override ReadOnlyCollection Subtypes 23 | { 24 | get { return new ReadOnlyCollection(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }); } 25 | } 26 | 27 | public override string Name 28 | { 29 | get { return "Swinging Platform"; } 30 | } 31 | 32 | public override bool RememberState 33 | { 34 | get { return false; } 35 | } 36 | 37 | public override string SubtypeName(byte subtype) 38 | { 39 | if ((subtype & 0x10) != 0) 40 | return (subtype & 0x0F) + " links + wrecking ball"; 41 | else 42 | return (subtype & 0x0F) + " links"; 43 | } 44 | 45 | public override Sprite Image 46 | { 47 | get { return imgs[0]; } 48 | } 49 | 50 | public override Sprite SubtypeImage(byte subtype) 51 | { 52 | if ((subtype & 0x10) != 0) 53 | return imgwreckingball; 54 | else 55 | return imgs[0]; 56 | } 57 | 58 | public override Sprite GetSprite(ObjectEntry obj) 59 | { 60 | int length = obj.SubType & 0x0F; 61 | List sprs = new List() { imgs[2] }; 62 | int yoff = 16; 63 | for (int i = 0; i < length; i++) 64 | { 65 | Sprite tmp = new Sprite(imgs[1]); 66 | tmp.Offset(0, yoff); 67 | sprs.Add(tmp); 68 | yoff += 16; 69 | } 70 | yoff -= 8; 71 | Sprite tm2 = new Sprite(SubtypeImage(obj.SubType)); 72 | tm2.Offset(0, yoff); 73 | sprs.Add(tm2); 74 | return new Sprite(sprs.ToArray()); 75 | } 76 | 77 | private PropertySpec[] customProperties = new PropertySpec[] { 78 | new PropertySpec("Chainlinks", typeof(int), "Extended", null, null, GetChainlinks, SetChainlinks), 79 | new PropertySpec("Wrecking Ball", typeof(bool), "Extended", null, null, GetWreckingBall, SetWreckingBall) 80 | }; 81 | 82 | public override PropertySpec[] CustomProperties 83 | { 84 | get 85 | { 86 | return customProperties; 87 | } 88 | } 89 | 90 | private static object GetChainlinks(ObjectEntry obj) 91 | { 92 | return obj.SubType & 0x0F; 93 | } 94 | 95 | private static void SetChainlinks(ObjectEntry obj, object value) 96 | { 97 | value = Math.Max(0, (Math.Min(0x0D, (int)value))); 98 | obj.SubType = (byte)((obj.SubType & ~0x0F) | (int)value); 99 | } 100 | 101 | private static object GetWreckingBall(ObjectEntry obj) 102 | { 103 | return (obj.SubType & 0x10) != 0 ? true : false; 104 | } 105 | 106 | private static void SetWreckingBall(ObjectEntry obj, object value) 107 | { 108 | obj.SubType = (byte)((obj.SubType & ~0x10) | ((bool)value == true ? 0x10 : 0)); 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /SONLVL/GHZ/WallBarrier.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /SONLVL/GHZ/obj.ini: -------------------------------------------------------------------------------- 1 | [11] 2 | codefile=GHZ/Bridge.cs 3 | codetype=S1ObjectDefinitions.GHZ.Bridge 4 | 5 | [17] 6 | codefile=GHZ/SpikedPole.cs 7 | codetype=S1ObjectDefinitions.GHZ.SpikedPole 8 | 9 | [18] 10 | xmlfile=GHZ/Platform.xml 11 | 12 | [1A] 13 | xmlfile=GHZ/CollapsingCliff.xml 14 | 15 | [1C] 16 | name=Bridge Stump 17 | art=../levels/GHZ/Bridge/Art.nem 18 | mapasm=../levels/GHZ/Bridge/Sprite.map 19 | frame=1 20 | pal=2 21 | subtypes=03 22 | defaultsubtype=03 23 | 24 | [1F] 25 | name=Crabmeat 26 | art=../levels/GHZ/Crabmeat/Art.nem 27 | mapasm=../levels/GHZ/Crabmeat/Sprite.map 28 | frame=0 29 | pal=0 30 | rememberstate=True 31 | 32 | [22] 33 | name=Buzz Bomber 34 | art=../levels/GHZ/Buzzbomber/Art.nem 35 | mapasm=../levels/GHZ/Buzzbomber/Sprite.map 36 | frame=0 37 | pal=0 38 | rememberstate=True 39 | 40 | [2B] 41 | name=Chopper 42 | art=../levels/GHZ/Chopper/Art.nem 43 | mapasm=../levels/GHZ/Chopper/Sprite.map 44 | frame=0 45 | pal=0 46 | rememberstate=True 47 | 48 | [3B] 49 | name=Purple rock 50 | art=../levels/GHZ/PurpleRock/Art.nem 51 | mapasm=../levels/GHZ/PurpleRock/Sprite.map 52 | frame=0 53 | pal=3 54 | 55 | [3C] 56 | xmlfile=GHZ/BreakableWall.xml 57 | 58 | [40] 59 | name=Moto Bug 60 | art=../levels/GHZ/Motobug/Art.nem 61 | mapasm=../levels/GHZ/Motobug/Sprite.map 62 | frame=0 63 | pal=0 64 | rememberstate=True 65 | 66 | [42] 67 | xmlfile=GHZ/Newtron.xml 68 | 69 | [44] 70 | xmlfile=GHZ/WallBarrier.xml 71 | 72 | [49] 73 | name=Waterfall sound effect 74 | debug=True 75 | -------------------------------------------------------------------------------- /SONLVL/LZ/Block.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /SONLVL/LZ/Bubbles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /SONLVL/LZ/ConveyorBelt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SONLVL/LZ/Door.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /SONLVL/LZ/FlappingDoor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SONLVL/LZ/Harpoon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SONLVL/LZ/Jaws.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SONLVL/LZ/MovingBlocks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /SONLVL/LZ/Orbinaut.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /SONLVL/LZ/Pole.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SONLVL/LZ/Spikeball.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Drawing; 5 | using SonicRetro.SonLVL.API; 6 | 7 | namespace S1ObjectDefinitions.LZ 8 | { 9 | class Spikeball : ObjectDefinition 10 | { 11 | private int[] labels = { 0, 1, 2 }; 12 | private Sprite img; 13 | private List imgs = new List(); 14 | 15 | public override void Init(ObjectData data) 16 | { 17 | byte[] artfile = ObjectHelper.OpenArtFile("../artnem/lzspball.bin", CompressionType.Nemesis); 18 | img = ObjectHelper.MapASMToBmp(artfile, "../_maps/obj57lz.asm", 1, 0); 19 | for (int i = 0; i < labels.Length; i++) 20 | imgs.Add(ObjectHelper.MapASMToBmp(artfile, "../_maps/obj57lz.asm", labels[i], 0)); 21 | } 22 | 23 | public override ReadOnlyCollection Subtypes 24 | { 25 | get { return new ReadOnlyCollection(new List()); } 26 | } 27 | 28 | public override string Name 29 | { 30 | get { return "Spikeball on Chain"; } 31 | } 32 | 33 | public override bool RememberState 34 | { 35 | get { return false; } 36 | } 37 | 38 | public override string SubtypeName(byte subtype) 39 | { 40 | return string.Empty; 41 | } 42 | 43 | public override Sprite Image 44 | { 45 | get { return img; } 46 | } 47 | 48 | public override Sprite SubtypeImage(byte subtype) 49 | { 50 | return img; 51 | } 52 | 53 | public override Sprite GetSprite(ObjectEntry obj) 54 | { 55 | int length = (obj.SubType & 0x0F) - 1; 56 | List sprs = new List(); 57 | int yoff = 0; 58 | if (length != -1) 59 | { 60 | sprs.Add(imgs[2]); 61 | yoff -= 16; 62 | } 63 | for (int i = 0; i < length; i++) 64 | { 65 | Sprite tmp = new Sprite(imgs[0]); 66 | tmp.Offset(0, yoff); 67 | sprs.Add(tmp); 68 | yoff -= 16; 69 | } 70 | Sprite tm2 = new Sprite(imgs[1]); 71 | tm2.Offset(0, yoff); 72 | sprs.Add(tm2); 73 | return new Sprite(sprs.ToArray()); 74 | } 75 | 76 | private PropertySpec[] customProperties = new PropertySpec[] { 77 | new PropertySpec("Chainlinks", typeof(int), "Extended", null, null, GetChainlinks, SetChainlinks), 78 | new PropertySpec("Speed", typeof(int), "Speed", null, null, GetSpeed, SetSpeed), 79 | new PropertySpec("Rotation", typeof(ChainRotation), "Extended", null, null, GetRotation, SetRotation) 80 | }; 81 | 82 | public override PropertySpec[] CustomProperties 83 | { 84 | get 85 | { 86 | return customProperties; 87 | } 88 | } 89 | 90 | private static object GetChainlinks(ObjectEntry obj) 91 | { 92 | return obj.SubType & 0x07; 93 | } 94 | 95 | private static void SetChainlinks(ObjectEntry obj, object value) 96 | { 97 | value = Math.Max(0, (Math.Min(0x07, (int)value))); 98 | obj.SubType = (byte)((obj.SubType & ~0x07) | (int)value); 99 | } 100 | 101 | private static object GetSpeed(ObjectEntry obj) 102 | { 103 | if ((obj.SubType & 0x80) == 0x80) 104 | return (((~obj.SubType & 0xF0) >> 4) + 1); 105 | else 106 | return ((obj.SubType & 0xF0) >> 4); 107 | } 108 | 109 | private static void SetSpeed(ObjectEntry obj, object value) 110 | { 111 | if ((obj.SubType & 0x80) == 0x80) 112 | obj.SubType = (byte)((obj.SubType & ~0xF0) | ((~(Math.Min(0x08, (int)value) - 1) & 0x0F) << 4)); 113 | else 114 | obj.SubType = (byte)((obj.SubType & ~0xF0) | (Math.Min(0x07, (int)value) << 4)); 115 | } 116 | 117 | private static object GetRotation(ObjectEntry obj) 118 | { 119 | return ((obj.SubType & 0x80) >> 7); 120 | } 121 | 122 | private static void SetRotation(ObjectEntry obj, object value) 123 | { 124 | if (((int)value==1) && (obj.SubType & 0x80) == 0) 125 | obj.SubType = (byte)((((~obj.SubType) & 0xF0) + 0x10) | (obj.SubType & 0x0F)); 126 | else if ((((int)value==0) && (obj.SubType & 0x80) == 0x80)) 127 | obj.SubType = (byte)(((((~obj.SubType) & 0xF0) + 0x10) | (obj.SubType & 0x0F)) & 0x7F); 128 | } 129 | } 130 | 131 | public enum ChainRotation 132 | { 133 | Clockwise, 134 | Counterclockwise 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /SONLVL/LZ/Waterfall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /SONLVL/LZ/obj.ini: -------------------------------------------------------------------------------- 1 | [2C] 2 | xmlfile=LZ/Jaws.xml 3 | 4 | [32] 5 | xmlfile=Common/Switch.xml 6 | -------------------------------------------------------------------------------- /SONLVL/MZ/Brick.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /SONLVL/MZ/LavaGeyser.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /SONLVL/MZ/MZ Lava.bin: -------------------------------------------------------------------------------- 1 | wwwwwfwwffffUUUUUTfVfUgfffwvfVffUUUUffUeUefffVwfwfwwwwwwffwgVUffUEUUUDUUVUffffwggfwwwwvwwgffffUfVUffwwfwfwffefUUUeETUUUUffffgfwwwwffffUeUfUUfVffwfvwvwffffUeUeTUTUDDUUUUffUfvwffwwfvwwwwfwffffUUUUUTUUVUffffvwffffUeffUUUfDTTUEDUeUUeffVUUUUETETUUVUffffwfwwwwggfffVUUfUffffwwwwwwwwffwfUUffUDUUVUfffVwwwfwwwgffffUeffffUUUUUUTUUUUUffffwwvwgfwwfVwgfUgfUDfVUUUUfVffwfwwffwgVUffffUUvwefwwfvvgUfwfwwfffwfffffvUevwefwwfvfffgUUffffefwwfwffffefUUVUfffUwgUUffEDUUTUDDUfTUffUefffffwffwwgfffffUUVUffUefwffwwgwffffUUUUEUUUUefVfUgf -------------------------------------------------------------------------------- /SONLVL/MZ/MovingBlocks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /SONLVL/MZ/MovingPlatform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /SONLVL/MZ/SidewaysStomper.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Drawing; 4 | using SonicRetro.SonLVL.API; 5 | 6 | namespace S1ObjectDefinitions.MZ 7 | { 8 | class SidewaysStomper : ObjectDefinition 9 | { 10 | private int[] labels = { 0, 1, 2, 5, 6, 8 }; 11 | private List imgs = new List(); 12 | 13 | public override void Init(ObjectData data) 14 | { 15 | byte[] blocks = ObjectHelper.OpenArtFile("../artnem/mzmetal.bin", CompressionType.Nemesis); 16 | byte[] padding = new byte[0x4360-blocks.Length]; 17 | byte[] spikes = ObjectHelper.OpenArtFile("../artnem/spikes.bin", CompressionType.Nemesis); 18 | List tmpartfile = new List(); 19 | tmpartfile.AddRange(blocks); 20 | tmpartfile.AddRange(padding); 21 | tmpartfile.AddRange(spikes); 22 | byte[] artfile = tmpartfile.ToArray(); 23 | for (int i = 0; i < labels.Length; i++) 24 | imgs.Add(ObjectHelper.MapASMToBmp(artfile, "../_maps/obj45.asm", labels[i], 0)); 25 | } 26 | 27 | public override ReadOnlyCollection Subtypes 28 | { 29 | get { return new ReadOnlyCollection(new byte[] { 0, 1, 2 }); } 30 | } 31 | 32 | public override string Name 33 | { 34 | get { return "Sideways Stomper"; } 35 | } 36 | 37 | public override bool RememberState 38 | { 39 | get { return false; } 40 | } 41 | 42 | public override string SubtypeName(byte subtype) 43 | { 44 | switch (subtype) 45 | { 46 | case 0: 47 | return "Short"; 48 | case 1: 49 | return "Long"; 50 | case 2: 51 | return "Medium"; 52 | default: 53 | return string.Empty; 54 | } 55 | } 56 | 57 | public override Sprite Image 58 | { 59 | get 60 | { 61 | List sprs = new List(); 62 | int xoff = 4; 63 | Sprite tmp = new Sprite(imgs[0]); 64 | tmp.Offset(xoff, 0); 65 | sprs.Add(tmp); 66 | tmp = new Sprite(imgs[1]); 67 | tmp.Offset(xoff - 0x1C, 0); 68 | sprs.Add(tmp); 69 | return new Sprite(sprs.ToArray()); 70 | } 71 | } 72 | 73 | public override Sprite SubtypeImage(byte subtype) 74 | { 75 | return Image; 76 | } 77 | 78 | public override Sprite GetSprite(ObjectEntry obj) 79 | { 80 | List sprs = new List(); 81 | int globalxoff = 4; 82 | int secondaryxoff = 0; 83 | Sprite tmp; 84 | switch (obj.SubType) 85 | { 86 | default: 87 | secondaryxoff = -0x38; 88 | tmp = new Sprite(imgs[3]); 89 | break; 90 | case 01: 91 | secondaryxoff = -0xA0; 92 | tmp = new Sprite(imgs[5]); 93 | break; 94 | case 02: 95 | secondaryxoff = -0x50; 96 | tmp = new Sprite(imgs[4]); 97 | break; 98 | } 99 | tmp.Offset(globalxoff + secondaryxoff + 0x34, 0); 100 | sprs.Add(tmp); 101 | tmp = new Sprite(imgs[2]); 102 | tmp.Offset(globalxoff + 0x28, 0); 103 | sprs.Add(tmp); 104 | tmp = new Sprite(imgs[1]); 105 | tmp.Offset(globalxoff + secondaryxoff - 0x1C, 0); 106 | sprs.Add(tmp); 107 | tmp = new Sprite(imgs[0]); 108 | tmp.Offset(globalxoff + secondaryxoff, 0); 109 | sprs.Add(tmp); 110 | return new Sprite(sprs.ToArray()); 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /SONLVL/MZ/SmashableBlock.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SONLVL/MZ/SpikedWeight.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /SONLVL/MZ/Switch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /SONLVL/MZ/obj.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [22] 4 | name=Buzz Bomber 5 | art=../levels/GHZ/Buzzbomber/Art.nem 6 | mapasm=../levels/GHZ/Buzzbomber/Sprite.map 7 | frame=0 8 | pal=0 9 | rememberstate=True 10 | 11 | [2F] 12 | xmlfile=MZ/MovingPlatform.xml 13 | 14 | [31] 15 | xmlfile=MZ/SpikedWeight.xml 16 | 17 | [32] 18 | xmlfile=MZ/Switch.xml 19 | 20 | [33] 21 | name=Pushable Block 22 | art=../levels/MZ/PushBlock/Art.nem 23 | mapasm=../levels/MZ/PushBlock/Sprite.map 24 | frame=0 25 | pal=2 26 | rememberstate=True 27 | 28 | [46] 29 | xmlfile=MZ/Brick.xml 30 | 31 | [50] 32 | name=Yadrin 33 | art=../levels/shared/Yadrin/Art.nem 34 | mapasm=../levels/shared/Yadrin/Sprite.map 35 | frame=0 36 | pal=1 37 | rememberstate=True 38 | 39 | [55] 40 | name=Basaran 41 | art=../levels/MZ/Basaran/Art.nem 42 | mapasm=../levels/MZ/Basaran/Sprite.map 43 | frame=0 44 | pal=0 45 | rememberstate=True 46 | -------------------------------------------------------------------------------- /SONLVL/SBZ/BallHog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SONLVL/SBZ/ConveyerBelt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SONLVL/SBZ/ConveyerBeltMap.asm: -------------------------------------------------------------------------------- 1 | ; -------------------------------------------------------------------------------- 2 | ; Sprite mappings - output from SonMapEd - Sonic 1 format 3 | ; -------------------------------------------------------------------------------- 4 | 5 | SME_y7ISv: 6 | dc.w SME_y7ISv_4-SME_y7ISv, SME_y7ISv_19-SME_y7ISv 7 | SME_y7ISv_4: dc.b 4 8 | dc.b $F0, 5, 0, $18, $C8 9 | dc.b 0, 5, 0, $18, $C8 10 | dc.b 0, 5, 0, $18, $28 11 | dc.b $F0, 5, 0, $18, $28 12 | SME_y7ISv_19: dc.b 4 13 | dc.b $F0, 5, 0, $18, $80 14 | dc.b 0, 5, 0, $18, $80 15 | dc.b 0, 5, 0, $18, $70 16 | dc.b $F0, 5, 0, $18, $70 17 | even -------------------------------------------------------------------------------- /SONLVL/SBZ/Flamethrower.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using SonicRetro.SonLVL.API; 4 | 5 | namespace S1ObjectDefinitions.SBZ 6 | { 7 | class Flamethrower : ObjectDefinition 8 | { 9 | private int[] labels = { 9, 20 }; 10 | private List imgs = new List(); 11 | 12 | public override void Init(ObjectData data) 13 | { 14 | byte[] artfile = ObjectHelper.OpenArtFile("../artnem/sbzflame.bin", CompressionType.Nemesis); 15 | for (int i = 0; i < labels.Length; i++) 16 | imgs.Add(ObjectHelper.MapASMToBmp(artfile, "../_maps/obj6D.asm", labels[i], 0)); 17 | } 18 | 19 | public override ReadOnlyCollection Subtypes 20 | { 21 | get { return new ReadOnlyCollection(new List()); } 22 | } 23 | 24 | public override string Name 25 | { 26 | get { return "Flamethrower"; } 27 | } 28 | 29 | public override bool RememberState 30 | { 31 | get { return false; } 32 | } 33 | 34 | public override string SubtypeName(byte subtype) 35 | { 36 | return string.Empty; 37 | } 38 | 39 | public override Sprite Image 40 | { 41 | get { return imgs[0]; } 42 | } 43 | 44 | public override Sprite SubtypeImage(byte subtype) 45 | { 46 | return imgs[0]; 47 | } 48 | 49 | public override Sprite GetSprite(ObjectEntry obj) 50 | { 51 | Sprite img = new Sprite(obj.YFlip ? imgs[1] : imgs[0]); 52 | img.Flip(obj.XFlip, obj.YFlip); 53 | return img; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /SONLVL/SBZ/MovingBlocks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /SONLVL/SBZ/RotatingJunction.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /SONLVL/SBZ/RunningDisc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SONLVL/SBZ/SBZ Horizontal Door map.asm: -------------------------------------------------------------------------------- 1 | ; -------------------------------------------------------------------------------- 2 | ; Sprite mappings - output from SonMapEd - Sonic 1 format 3 | ; -------------------------------------------------------------------------------- 4 | 5 | SME_JnQ1N: 6 | dc.w SME_JnQ1N_2-SME_JnQ1N 7 | SME_JnQ1N_2: dc.b 5 8 | dc.b $F4, $E, 0, 0, $C0 9 | dc.b $F4, $E, 0, 3, $E0 10 | dc.b $F4, $E, 0, 3, 0 11 | dc.b $F4, $A, 0, 3, $20 12 | dc.b $F4, 2, 8, 0, $38 13 | even -------------------------------------------------------------------------------- /SONLVL/SBZ/Saws.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /SONLVL/SBZ/SpinningPlatform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /SONLVL/SBZ/Stomper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /SONLVL/SBZ/SwingingSpikeball.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using SonicRetro.SonLVL.API; 5 | 6 | namespace S1ObjectDefinitions.SBZ 7 | { 8 | class SwingingSpikeball : ObjectDefinition 9 | { 10 | private int[] labels = { 0, 1, 2 }; 11 | private Sprite imgwreckingball; 12 | private List imgs = new List(); 13 | 14 | public override void Init(ObjectData data) 15 | { 16 | imgwreckingball = ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/ghzball.bin", CompressionType.Nemesis), "../_maps/obj48.asm", 1, 2); 17 | for (int i = 0; i < labels.Length; i++) 18 | imgs.Add(ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/syzlspik.bin", CompressionType.Nemesis), "../_maps/obj15sbz.asm", labels[i], i == 2 ? 2 : 0)); 19 | } 20 | 21 | public override ReadOnlyCollection Subtypes 22 | { 23 | get { return new ReadOnlyCollection(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }); } 24 | } 25 | 26 | public override string Name 27 | { 28 | get { return "Swinging Spikeball"; } 29 | } 30 | 31 | public override bool RememberState 32 | { 33 | get { return false; } 34 | } 35 | 36 | public override string SubtypeName(byte subtype) 37 | { 38 | if ((subtype & 0x10) != 0) 39 | return (subtype & 0x0F) + " links + wrecking ball"; 40 | else 41 | return (subtype & 0x0F) + " links"; 42 | } 43 | 44 | public override Sprite Image 45 | { 46 | get { return imgs[0]; } 47 | } 48 | 49 | public override Sprite SubtypeImage(byte subtype) 50 | { 51 | if ((subtype & 0x10) != 0) 52 | return imgwreckingball; 53 | else 54 | return imgs[0]; 55 | } 56 | 57 | public override Sprite GetSprite(ObjectEntry obj) 58 | { 59 | int length = obj.SubType & 0x0F; 60 | List sprs = new List() { imgs[2] }; 61 | int yoff = 16; 62 | for (int i = 0; i < length; i++) 63 | { 64 | Sprite tmp = new Sprite(imgs[1]); 65 | tmp.Offset(0, yoff); 66 | sprs.Add(tmp); 67 | yoff += 16; 68 | } 69 | yoff -= 8; 70 | Sprite tm2 = new Sprite(SubtypeImage(obj.SubType)); 71 | tm2.Offset(0, yoff); 72 | sprs.Add(tm2); 73 | return new Sprite(sprs.ToArray()); 74 | } 75 | 76 | private PropertySpec[] customProperties = new PropertySpec[] { 77 | new PropertySpec("Chainlinks", typeof(int), "Extended", null, null, GetChainlinks, SetChainlinks), 78 | new PropertySpec("Wrecking Ball", typeof(bool), "Extended", null, null, GetWreckingBall, SetWreckingBall) 79 | }; 80 | 81 | public override PropertySpec[] CustomProperties 82 | { 83 | get 84 | { 85 | return customProperties; 86 | } 87 | } 88 | 89 | private static object GetChainlinks(ObjectEntry obj) 90 | { 91 | return obj.SubType & 0x0F; 92 | } 93 | 94 | private static void SetChainlinks(ObjectEntry obj, object value) 95 | { 96 | value = Math.Max(0, (Math.Min(0x0D, (int)value))); 97 | obj.SubType = (byte)((obj.SubType & ~0x0F) | (int)value); 98 | } 99 | 100 | private static object GetWreckingBall(ObjectEntry obj) 101 | { 102 | return (obj.SubType & 0x10) != 0 ? true : false; 103 | } 104 | 105 | private static void SetWreckingBall(ObjectEntry obj, object value) 106 | { 107 | obj.SubType = (byte)((obj.SubType & ~0x10) | ((bool)value == true ? 0x10 : 0)); 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /SONLVL/SBZ/obj.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/SONLVL/SBZ/obj.ini -------------------------------------------------------------------------------- /SONLVL/SLZ/CirclingPlatform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /SONLVL/SLZ/Elevator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /SONLVL/SLZ/Fan.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /SONLVL/SLZ/Orbinaut.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /SONLVL/SLZ/Platform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /SONLVL/SLZ/Seesaw.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /SONLVL/SLZ/Stairs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /SONLVL/SLZ/SwingingPlatform.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Drawing; 5 | using SonicRetro.SonLVL.API; 6 | 7 | namespace S1ObjectDefinitions.SLZ 8 | { 9 | class SwingingPlatform : ObjectDefinition 10 | { 11 | private int[] labels = { 0, 1, 2 }; 12 | private Sprite imgwreckingball; 13 | private List imgs = new List(); 14 | 15 | public override void Init(ObjectData data) 16 | { 17 | imgwreckingball = ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/ghzball.bin", CompressionType.Nemesis), "../_maps/obj48.asm", 1, 2); 18 | for (int i = 0; i < labels.Length; i++) 19 | imgs.Add(ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/slzswing.bin", CompressionType.Nemesis), "../_maps/obj15slz.asm", labels[i], i == 1 ? 0 : 2)); 20 | } 21 | 22 | public override ReadOnlyCollection Subtypes 23 | { 24 | get { return new ReadOnlyCollection(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }); } 25 | } 26 | 27 | public override string Name 28 | { 29 | get { return "Swinging Platform"; } 30 | } 31 | 32 | public override bool RememberState 33 | { 34 | get { return false; } 35 | } 36 | 37 | public override string SubtypeName(byte subtype) 38 | { 39 | if ((subtype & 0x10) != 0) 40 | return (subtype & 0x0F) + " links + wrecking ball"; 41 | else 42 | return (subtype & 0x0F) + " links"; 43 | } 44 | 45 | public override Sprite Image 46 | { 47 | get { return imgs[0]; } 48 | } 49 | 50 | public override Sprite SubtypeImage(byte subtype) 51 | { 52 | if ((subtype & 0x10) != 0) 53 | return imgwreckingball; 54 | else 55 | return imgs[0]; 56 | } 57 | 58 | public override Sprite GetSprite(ObjectEntry obj) 59 | { 60 | int length = obj.SubType & 0x0F; 61 | List sprs = new List() { imgs[2] }; 62 | int yoff = 16; 63 | for (int i = 0; i < length; i++) 64 | { 65 | Sprite tmp = new Sprite(imgs[1]); 66 | tmp.Offset(0, yoff); 67 | sprs.Add(tmp); 68 | yoff += 16; 69 | } 70 | yoff -= 8; 71 | Sprite tm2 = new Sprite(SubtypeImage(obj.SubType)); 72 | tm2.Offset(0, yoff); 73 | sprs.Add(tm2); 74 | return new Sprite(sprs.ToArray()); 75 | } 76 | 77 | private PropertySpec[] customProperties = new PropertySpec[] { 78 | new PropertySpec("Chainlinks", typeof(int), "Extended", null, null, GetChainlinks, SetChainlinks), 79 | new PropertySpec("Wrecking Ball", typeof(bool), "Extended", null, null, GetWreckingBall, SetWreckingBall) 80 | }; 81 | 82 | public override PropertySpec[] CustomProperties 83 | { 84 | get 85 | { 86 | return customProperties; 87 | } 88 | } 89 | 90 | private static object GetChainlinks(ObjectEntry obj) 91 | { 92 | return obj.SubType & 0x0F; 93 | } 94 | 95 | private static void SetChainlinks(ObjectEntry obj, object value) 96 | { 97 | value = Math.Max(0, (Math.Min(0x0D, (int)value))); 98 | obj.SubType = (byte)((obj.SubType & ~0x0F) | (int)value); 99 | } 100 | 101 | private static object GetWreckingBall(ObjectEntry obj) 102 | { 103 | return (obj.SubType & 0x10) != 0 ? true : false; 104 | } 105 | 106 | private static void SetWreckingBall(ObjectEntry obj, object value) 107 | { 108 | obj.SubType = (byte)((obj.SubType & ~0x10) | ((bool)value == true ? 0x10 : 0)); 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /SONLVL/SLZ/obj.ini: -------------------------------------------------------------------------------- 1 | 2 | [18] 3 | xmlfile=SLZ/Platform.xml 4 | 5 | [5A] 6 | xmlfile=SLZ/CirclingPlatform.xml 7 | 8 | [5B] 9 | xmlfile=SLZ/Stairs.xml 10 | 11 | [5D] 12 | xmlfile=SLZ/Fan.xml 13 | 14 | [5E] 15 | xmlfile=SLZ/Seesaw.xml 16 | -------------------------------------------------------------------------------- /SONLVL/SYZ/BigSpikedBall.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Drawing; 5 | using SonicRetro.SonLVL.API; 6 | 7 | namespace S1ObjectDefinitions.SYZ 8 | { 9 | class BigSpikedBall : ObjectDefinition 10 | { 11 | private Sprite img; 12 | 13 | public override void Init(ObjectData data) 14 | { 15 | img = (ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/syzlspik.bin", CompressionType.Nemesis), "../_maps/obj15sbz.asm", 0, 0)); 16 | } 17 | 18 | public override ReadOnlyCollection Subtypes 19 | { 20 | get { return new ReadOnlyCollection(new List()); } 21 | } 22 | 23 | public override string Name 24 | { 25 | get { return "Big Spiked Ball"; } 26 | } 27 | 28 | public override bool RememberState 29 | { 30 | get { return false; } 31 | } 32 | 33 | public override string SubtypeName(byte subtype) 34 | { 35 | return string.Empty; 36 | } 37 | 38 | public override Sprite Image 39 | { 40 | get { return img; } 41 | } 42 | 43 | public override Sprite SubtypeImage(byte subtype) 44 | { 45 | return img; 46 | } 47 | 48 | public override Sprite GetSprite(ObjectEntry obj) 49 | { 50 | int yoff = 0; 51 | if ((obj.SubType & 0x0F) == (int)SpikeballMovement.Circular) 52 | { 53 | if (obj.YFlip == true) 54 | yoff = -0x50; 55 | else 56 | yoff = 0x50; 57 | } 58 | Sprite tmp = new Sprite(img); 59 | tmp.Offset(0, yoff); 60 | return tmp; 61 | } 62 | 63 | private static readonly PropertySpec[] customProperties = new PropertySpec[] { 64 | new PropertySpec("Movement", typeof(SpikeballMovement), "Extended", null, null, GetMovement, SetMovement), 65 | new PropertySpec("Speed (Circular Only)", typeof(int), "Speed", null, null, GetSpeed, SetSpeed), 66 | new PropertySpec("Rotation (Circular Only)", typeof(SpikeballRotation), "Extended", null, null, GetRotation, SetRotation) 67 | }; 68 | 69 | public override PropertySpec[] CustomProperties 70 | { 71 | get { return customProperties; } 72 | } 73 | 74 | public static object GetMovement(ObjectEntry obj) 75 | { 76 | return (SpikeballMovement)(obj.SubType & 0x0F); 77 | } 78 | 79 | public static void SetMovement(ObjectEntry obj, object value) 80 | { 81 | obj.SubType = (byte)((obj.SubType & ~0x0F) | (int)value); 82 | } 83 | 84 | private static object GetSpeed(ObjectEntry obj) 85 | { 86 | if ((obj.SubType & 0x80) == 0x80) 87 | return (((~obj.SubType & 0xF0) >> 4) + 1); 88 | else 89 | return ((obj.SubType & 0xF0) >> 4); 90 | } 91 | 92 | private static void SetSpeed(ObjectEntry obj, object value) 93 | { 94 | if ((obj.SubType & 0x80) == 0x80) 95 | obj.SubType = (byte)((obj.SubType & ~0xF0) | ((~(Math.Min(0x08, (int)value) - 1) & 0x0F) << 4)); 96 | else 97 | obj.SubType = (byte)((obj.SubType & ~0xF0) | (Math.Min(0x07, (int)value) << 4)); 98 | } 99 | 100 | private static object GetRotation(ObjectEntry obj) 101 | { 102 | return ((obj.SubType & 0x80) >> 7); 103 | } 104 | 105 | private static void SetRotation(ObjectEntry obj, object value) 106 | { 107 | if (((int)value==1) && (obj.SubType & 0x80) == 0) 108 | obj.SubType = (byte)((((~obj.SubType) & 0xF0) + 0x10) | (obj.SubType & 0x0F)); 109 | else if ((((int)value==0) && (obj.SubType & 0x80) == 0x80)) 110 | obj.SubType = (byte)(((((~obj.SubType) & 0xF0) + 0x10) | (obj.SubType & 0x0F)) & 0x7F); 111 | } 112 | } 113 | 114 | public enum SpikeballMovement 115 | { 116 | Stationary, 117 | Horizontal, 118 | Vertical, 119 | Circular 120 | } 121 | 122 | public enum SpikeballRotation 123 | { 124 | Clockwise, 125 | Counterclockwise 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /SONLVL/SYZ/Block.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Drawing; 4 | using SonicRetro.SonLVL.API; 5 | 6 | namespace S1ObjectDefinitions.SYZ 7 | { 8 | class Block : ObjectDefinition 9 | { 10 | private Sprite img; 11 | private List imgs = new List(); 12 | 13 | public override void Init(ObjectData data) 14 | { 15 | byte[] artfile = ObjectHelper.LevelArt; 16 | img = ObjectHelper.MapASMToBmp(artfile, "../_maps/obj56.asm", 0, 2); 17 | for (int i = 0; i < 8; i++) 18 | imgs.Add(ObjectHelper.MapASMToBmp(artfile, "../_maps/obj56.asm", i, 2)); 19 | } 20 | 21 | public override ReadOnlyCollection Subtypes 22 | { 23 | get { return new ReadOnlyCollection(new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0B, 0x0C }); } 24 | } 25 | 26 | public override string Name 27 | { 28 | get { return "Platform"; } 29 | } 30 | 31 | public override bool RememberState 32 | { 33 | get { return false; } 34 | } 35 | 36 | public override string SubtypeName(byte subtype) 37 | { 38 | return ((PlatformMovement)(subtype & 0xF)).ToString(); 39 | } 40 | 41 | public override Sprite Image 42 | { 43 | get { return img; } 44 | } 45 | 46 | public override Sprite SubtypeImage(byte subtype) 47 | { 48 | return imgs[(subtype & 0x70) >> 4]; 49 | } 50 | 51 | public override Sprite GetSprite(ObjectEntry obj) 52 | { 53 | Sprite tmp = new Sprite(SubtypeImage(obj.SubType)); 54 | tmp.Flip(obj.XFlip, obj.YFlip); 55 | return tmp; 56 | } 57 | 58 | private static readonly PropertySpec[] customProperties = new PropertySpec[] { 59 | new PropertySpec("Movement", typeof(PlatformMovement), "Extended", null, null, GetMovement, SetMovement), 60 | new PropertySpec("Switch ID", typeof(int), "Extended", null, null, GetSwitchID, SetSwitchID), 61 | new PropertySpec("Switch-Controlled", typeof(bool), "Extended", null, null, GetSwitchControl, SetSwitchControl) 62 | }; 63 | 64 | public override PropertySpec[] CustomProperties 65 | { 66 | get { return customProperties; } 67 | } 68 | 69 | public static object GetMovement(ObjectEntry obj) 70 | { 71 | return (PlatformMovement)(obj.SubType & 0x0F); 72 | } 73 | 74 | public static void SetMovement(ObjectEntry obj, object value) 75 | { 76 | obj.SubType = (byte)((obj.SubType & ~0x0F) | (int)value); 77 | } 78 | 79 | public static object GetSwitchID(ObjectEntry obj) 80 | { 81 | return (byte)(obj.SubType & 0x0F); 82 | } 83 | 84 | public static void SetSwitchID(ObjectEntry obj, object value) 85 | { 86 | obj.SubType = (byte)((obj.SubType & ~0x0F) | ((byte)value & 0x0F)); 87 | } 88 | 89 | public static object GetSwitchControl(ObjectEntry obj) 90 | { 91 | return (obj.SubType & 0x80) != 0 ? true : false; 92 | } 93 | 94 | public static void SetSwitchControl(ObjectEntry obj, object value) 95 | { 96 | obj.SubType = (byte)((obj.SubType & ~0x80) | ((bool)value == true ? 0x80 : 0)); 97 | } 98 | } 99 | 100 | public enum PlatformMovement 101 | { 102 | Stationary, 103 | RightLeft, 104 | DownUp, 105 | FallStand, 106 | Fall, 107 | LeftRight, 108 | UpDown, 109 | SwitchUp, 110 | MoveUp, 111 | Stationary2, 112 | Invalid1, 113 | DownUpSlow, 114 | UpDownSlow, 115 | Invalid2, 116 | Invalid3, 117 | Invalid4 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /SONLVL/SYZ/Platform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /SONLVL/SYZ/SpikeballChain.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Drawing; 5 | using SonicRetro.SonLVL.API; 6 | 7 | namespace S1ObjectDefinitions.SYZ 8 | { 9 | class SpikeballChain : ObjectDefinition 10 | { 11 | private Sprite img; 12 | 13 | public override void Init(ObjectData data) 14 | { 15 | img = ObjectHelper.MapASMToBmp(ObjectHelper.OpenArtFile("../artnem/syzsspik.bin", CompressionType.Nemesis), "../_maps/obj57syz.asm", 0, 0); 16 | } 17 | 18 | public override ReadOnlyCollection Subtypes 19 | { 20 | get { return new ReadOnlyCollection(new List()); } 21 | } 22 | 23 | public override string Name 24 | { 25 | get { return "Spikeball Chain"; } 26 | } 27 | 28 | public override bool RememberState 29 | { 30 | get { return false; } 31 | } 32 | 33 | public override string SubtypeName(byte subtype) 34 | { 35 | return string.Empty; 36 | } 37 | 38 | public override Sprite Image 39 | { 40 | get { return img; } 41 | } 42 | 43 | public override Sprite SubtypeImage(byte subtype) 44 | { 45 | return img; 46 | } 47 | 48 | public override Sprite GetSprite(ObjectEntry obj) 49 | { 50 | int length = (obj.SubType & 0x0F) + 1; 51 | List sprs = new List(); 52 | int yoff = 0; 53 | for (int i = 0; i < length; i++) 54 | { 55 | Sprite tmp = new Sprite(img); 56 | tmp.Offset(0, yoff); 57 | sprs.Add(tmp); 58 | yoff -= 16; 59 | } 60 | return new Sprite(sprs.ToArray()); 61 | } 62 | 63 | private PropertySpec[] customProperties = new PropertySpec[] { 64 | new PropertySpec("Spikeballs", typeof(int), "Extended", null, null, GetChainlinks, SetChainlinks), 65 | new PropertySpec("Speed", typeof(int), "Speed", null, null, GetSpeed, SetSpeed), 66 | new PropertySpec("Rotation", typeof(ChainRotation), "Extended", null, null, GetRotation, SetRotation) 67 | }; 68 | 69 | public override PropertySpec[] CustomProperties 70 | { 71 | get 72 | { 73 | return customProperties; 74 | } 75 | } 76 | 77 | private static object GetChainlinks(ObjectEntry obj) 78 | { 79 | return (obj.SubType & 0x07) + 1; 80 | } 81 | 82 | private static void SetChainlinks(ObjectEntry obj, object value) 83 | { 84 | value = Math.Max(1, (Math.Min(0x07, ((int)value - 1)))); 85 | obj.SubType = (byte)((obj.SubType & ~0x07) | ((int)value - 1)); 86 | } 87 | 88 | private static object GetSpeed(ObjectEntry obj) 89 | { 90 | if ((obj.SubType & 0x80) == 0x80) 91 | return (((~obj.SubType & 0xF0) >> 4) + 1); 92 | else 93 | return ((obj.SubType & 0xF0) >> 4); 94 | } 95 | 96 | private static void SetSpeed(ObjectEntry obj, object value) 97 | { 98 | if ((obj.SubType & 0x80) == 0x80) 99 | obj.SubType = (byte)((obj.SubType & ~0xF0) | ((~(Math.Min(0x08, (int)value) - 1) & 0x0F) << 4)); 100 | else 101 | obj.SubType = (byte)((obj.SubType & ~0xF0) | (Math.Min(0x07, (int)value) << 4)); 102 | } 103 | 104 | private static object GetRotation(ObjectEntry obj) 105 | { 106 | return ((obj.SubType & 0x80) >> 7); 107 | } 108 | 109 | private static void SetRotation(ObjectEntry obj, object value) 110 | { 111 | if (((int)value==1) && (obj.SubType & 0x80) == 0) 112 | obj.SubType = (byte)((((~obj.SubType) & 0xF0) + 0x10) | (obj.SubType & 0x0F)); 113 | else if ((((int)value==0) && (obj.SubType & 0x80) == 0x80)) 114 | obj.SubType = (byte)(((((~obj.SubType) & 0xF0) + 0x10) | (obj.SubType & 0x0F)) & 0x7F); 115 | } 116 | } 117 | 118 | public enum ChainRotation 119 | { 120 | Clockwise, 121 | Counterclockwise 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /SONLVL/SYZ/obj.ini: -------------------------------------------------------------------------------- 1 | [12] 2 | name=Siren Light 3 | art=LevelArt 4 | mapasm=../levels/SYZ/SceneryLamp/Sprite.map 5 | frame=1 6 | pal=0 7 | rememberstate=False 8 | 9 | [18] 10 | xmlfile=SYZ/Platform.xml 11 | 12 | [22] 13 | name=Buzz Bomber 14 | art=../levels/GHZ/Buzzbomber/Art.nem 15 | mapasm=../levels/GHZ/Buzzbomber/Sprite.map 16 | frame=0 17 | pal=0 18 | rememberstate=True 19 | 20 | [32] 21 | xmlfile=Common/Switch.xml 22 | 23 | [47] 24 | name=Bumper 25 | art=../levels/SYZ/Bumper/Art.nem 26 | mapasm=../levels/SYZ/Bumper/Sprite.map 27 | frame=0 28 | pal=0 29 | rememberstate=False 30 | 31 | [50] 32 | name=Yadrin 33 | art=../levels/shared/Yadrin/Art.nem 34 | mapasm=../levels/shared/Yadrin/Sprite.map 35 | frame=0 36 | pal=1 37 | rememberstate=True 38 | -------------------------------------------------------------------------------- /SONLVL/obj.ini: -------------------------------------------------------------------------------- 1 | [Sonic] 2 | art=../levels/shared/Sonic/Art.unc 3 | artcmp=Uncompressed 4 | mapasm=../levels/shared/Sonic/Sprite.map 5 | dplcasm=../levels/shared/Sonic/Dynamic.map 6 | frame=1 7 | 8 | [0D] 9 | name=Signpost 10 | art=../levels/shared/Signpost/Art.nem 11 | mapasm=../levels/shared/Signpost/Sprite.map 12 | frame=0 13 | pal=0 14 | 15 | [25] 16 | codefile=Common/Ring.cs 17 | codetype=S1ObjectDefinitions.Common.Ring 18 | 19 | [26] 20 | xmlfile=Common/Monitor.xml 21 | 22 | [36] 23 | xmlfile=Common/Spikes.xml 24 | 25 | [41] 26 | xmlfile=Common/Spring.xml 27 | 28 | [54] 29 | xmlfile=Common/Invisible lava marker.xml 30 | -------------------------------------------------------------------------------- /build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | "tools/asm68k.exe" /o ae- /p main.asm, out.md, , out.lst>out.log 3 | type out.log 4 | if not exist out.md pause & exit 5 | rem "tools/fixheadr.exe" out.md 6 | del out.log 7 | -------------------------------------------------------------------------------- /diff.bat: -------------------------------------------------------------------------------- 1 | "tools/VBinDiff.exe" "tools/s1proto.md" "out.md" 2 | -------------------------------------------------------------------------------- /levels/GHZ/BallHog/Cannonball.map: -------------------------------------------------------------------------------- 1 | MapCannonball: dc.w byte_729C-MapCannonball 2 | 3 | byte_729C: dc.b 1 4 | dc.b $F8, 5, 0, 0, $F8 5 | -------------------------------------------------------------------------------- /levels/GHZ/BallHog/CannonballExplode.map: -------------------------------------------------------------------------------- 1 | MapCannonballExplode:dc.w byte_72AA-MapCannonballExplode, byte_72B0-MapCannonballExplode, byte_72B6-MapCannonballExplode, byte_72BC-MapCannonballExplode 2 | 3 | byte_72AA: dc.b 1 4 | dc.b $F4, $A, 0, 0, $F4 5 | 6 | byte_72B0: dc.b 1 7 | dc.b $F4, $A, 0, 9, $F4 8 | 9 | byte_72B6: dc.b 1 10 | dc.b $F4, $A, 0, $12, $F4 11 | 12 | byte_72BC: dc.b 1 13 | dc.b $F4, $A, 0, $1B, $F4 14 | -------------------------------------------------------------------------------- /levels/GHZ/BallHog/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniBallhog: dc.w byte_724A-AniBallhog, byte_724E-AniBallhog, byte_7254-AniBallhog 2 | 3 | byte_724A: dc.b $F, 0, $FF 4 | dc.b 0 5 | 6 | byte_724E: dc.b $B, 1, 0, $21, 0, $FF 7 | 8 | byte_7254: dc.b $14, 0, 2, 0, $FE, 1 9 | -------------------------------------------------------------------------------- /levels/GHZ/BallHog/Sprite.map: -------------------------------------------------------------------------------- 1 | MapBallhog: dc.w byte_7260-MapBallhog, byte_7275-MapBallhog, byte_7285-MapBallhog 2 | 3 | byte_7260: dc.b 4 4 | dc.b $ED, 7, 0, 0, $F0 5 | dc.b $ED, 7, 8, 0, 0 6 | dc.b $D, 4, 0, 8, $F0 7 | dc.b $D, 4, 8, 8, 0 8 | 9 | byte_7275: dc.b 3 10 | dc.b $EC, 7, 0, 0, $EE 11 | dc.b $EC, 7, 8, 0, $FE 12 | dc.b $C, $C, 0, $A, $EE 13 | 14 | byte_7285: dc.b 4 15 | dc.b $ED, 7, 0, $E, $F0 16 | dc.b $ED, 7, 8, $E, 0 17 | dc.b $D, 4, 0, $16, $F0 18 | dc.b $D, 4, 8, $16, 0 19 | -------------------------------------------------------------------------------- /levels/GHZ/Boss/Ball.map: -------------------------------------------------------------------------------- 1 | MapGHZBossBall: dc.w byte_B5F8-MapGHZBossBall, byte_B5FE-MapGHZBossBall, byte_B604-MapGHZBossBall 2 | dc.w byte_B60A-MapGHZBossBall, byte_B610-MapGHZBossBall 3 | dc.w byte_B616-MapGHZBossBall, byte_B61C-MapGHZBossBall 4 | dc.w byte_B622-MapGHZBossBall, byte_B628-MapGHZBossBall 5 | dc.w byte_B62E-MapGHZBossBall 6 | 7 | byte_B5F8: dc.b 1 8 | dc.b $F8, 5, 0, 0, $F8 9 | 10 | byte_B5FE: dc.b 1 11 | dc.b $FC, 4, 0, 4, $F8 12 | 13 | byte_B604: dc.b 1 14 | dc.b $FC, 0, 0, 6, $FC 15 | 16 | byte_B60A: dc.b 1 17 | dc.b $FC, 4, 0, 7, $F8 18 | 19 | byte_B610: dc.b 1 20 | dc.b $F8, 5, 0, 9, $F8 21 | 22 | byte_B616: dc.b 1 23 | dc.b $FC, 4, 0, $D, $F8 24 | 25 | byte_B61C: dc.b 1 26 | dc.b $F4, 6, 0, $F, $F8 27 | 28 | byte_B622: dc.b 1 29 | dc.b $F0, 7, 0, $15, $F8 30 | 31 | byte_B628: dc.b 1 32 | dc.b $F8, 9, 0, $1D, $F4 33 | 34 | byte_B62E: dc.b 2 35 | dc.b $F0, $B, 0, $23, $FC 36 | dc.b 8, 4, 0, $2F, $EC 37 | -------------------------------------------------------------------------------- /levels/GHZ/Boss/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniGHZBoss: dc.w byte_B506-AniGHZBoss, byte_B50A-AniGHZBoss, byte_B50E-AniGHZBoss 2 | dc.w byte_B512-AniGHZBoss, byte_B516-AniGHZBoss, byte_B522-AniGHZBoss 3 | dc.w byte_B526-AniGHZBoss, byte_B52A-AniGHZBoss, byte_B52E-AniGHZBoss 4 | dc.w byte_B532-AniGHZBoss 5 | 6 | byte_B506: dc.b $F, 0, $FF 7 | even 8 | 9 | byte_B50A: dc.b 5, 1, 2, $FF 10 | 11 | byte_B50E: dc.b 3, 1, 2, $FF 12 | 13 | byte_B512: dc.b 1, 1, 2, $FF 14 | 15 | byte_B516: dc.b 3, 3, 4, 3, 4, 3, 4, 3, 4, $FD, 1 16 | dc.b 0 17 | 18 | byte_B522: dc.b $1F, 5, 1, $FF 19 | 20 | byte_B526: dc.b 3, 6, 1, $FF 21 | 22 | byte_B52A: dc.b $F, $A, $FF 23 | even 24 | 25 | byte_B52E: dc.b 3, 8, 9, $FF 26 | 27 | byte_B532: dc.b 1, 8, 9, $FF 28 | -------------------------------------------------------------------------------- /levels/GHZ/Boss/Sprite.map: -------------------------------------------------------------------------------- 1 | MapGHZBoss: dc.w byte_B54C-MapGHZBoss, byte_B56B-MapGHZBoss, byte_B576-MapGHZBoss 2 | dc.w byte_B581-MapGHZBoss, byte_B591-MapGHZBoss, byte_B5A1-MapGHZBoss 3 | dc.w byte_B5B1-MapGHZBoss, byte_B5C1-MapGHZBoss, byte_B5D6-MapGHZBoss 4 | dc.w byte_B5DC-MapGHZBoss, byte_B5E2-MapGHZBoss 5 | 6 | byte_B54C: dc.b 6 7 | dc.b $EC, 1, 0, $A, $E4 8 | dc.b $EC, 5, 0, $C, $C 9 | dc.b $FC, $E, $20, $10, $E4 10 | dc.b $FC, $E, $20, $1C, 4 11 | dc.b $14, $C, $20, $28, $EC 12 | dc.b $14, 0, $20, $2C, $C 13 | 14 | byte_B56B: dc.b 2 15 | dc.b $E4, 4, 0, 0, $F4 16 | dc.b $EC, $D, 0, 2, $EC 17 | 18 | byte_B576: dc.b 2 19 | dc.b $E4, 4, 0, 0, $F4 20 | dc.b $EC, $D, 0, $35, $EC 21 | 22 | byte_B581: dc.b 3 23 | dc.b $E4, 8, 0, $3D, $F4 24 | dc.b $EC, 9, 0, $40, $EC 25 | dc.b $EC, 5, 0, $46, 4 26 | 27 | byte_B591: dc.b 3 28 | dc.b $E4, 8, 0, $4A, $F4 29 | dc.b $EC, 9, 0, $4D, $EC 30 | dc.b $EC, 5, 0, $53, 4 31 | 32 | byte_B5A1: dc.b 3 33 | dc.b $E4, 8, 0, $57, $F4 34 | dc.b $EC, 9, 0, $5A, $EC 35 | dc.b $EC, 5, 0, $60, 4 36 | 37 | byte_B5B1: dc.b 3 38 | dc.b $E2, 4, 0, $64, $C 39 | dc.b $E4, 4, 0, 0, $F4 40 | dc.b $EC, $D, 0, $35, $EC 41 | 42 | byte_B5C1: dc.b 4 43 | dc.b $E4, 9, 0, $66, $F4 44 | dc.b $E4, 8, 0, $57, $F4 45 | dc.b $EC, 9, 0, $5A, $EC 46 | dc.b $EC, 5, 0, $60, 4 47 | 48 | byte_B5D6: dc.b 1 49 | dc.b 4, 5, 0, $2D, $22 50 | 51 | byte_B5DC: dc.b 1 52 | dc.b 4, 5, 0, $31, $22 53 | 54 | byte_B5E2: dc.b 0 55 | -------------------------------------------------------------------------------- /levels/GHZ/Bridge/Sprite.map: -------------------------------------------------------------------------------- 1 | MapBridge: dc.w byte_5464-MapBridge, byte_546A-MapBridge, byte_5475-MapBridge 2 | 3 | byte_5464: dc.b 1 4 | dc.b $F8, 5, 0, 0, $F8 5 | 6 | byte_546A: dc.b 2 7 | dc.b $F8, 4, 0, 4, $F0 8 | dc.b 0, $C, 0, 6, $F0 9 | 10 | byte_5475: dc.b 1 11 | dc.b $FC, 4, 0, 8, $F8 12 | -------------------------------------------------------------------------------- /levels/GHZ/Buzzbomber/Missile.ani: -------------------------------------------------------------------------------- 1 | AniBuzzMissile: dc.w byte_7AE8-AniBuzzMissile, byte_7AEC-AniBuzzMissile 2 | 3 | byte_7AE8: dc.b 7, 0, 1, $FC 4 | 5 | byte_7AEC: dc.b 1, 2, 3, $FF 6 | -------------------------------------------------------------------------------- /levels/GHZ/Buzzbomber/Missile.map: -------------------------------------------------------------------------------- 1 | MapBuzzMissile: dc.w byte_7BC8-MapBuzzMissile, byte_7BCE-MapBuzzMissile, byte_7BD4-MapBuzzMissile, byte_7BDA-MapBuzzMissile 2 | 3 | byte_7BC8: dc.b 1 4 | dc.b $F8, 5, 0, $24, $F8 5 | 6 | byte_7BCE: dc.b 1 7 | dc.b $F8, 5, 0, $28, $F8 8 | 9 | byte_7BD4: dc.b 1 10 | dc.b $F8, 5, 0, $2C, $F8 11 | 12 | byte_7BDA: dc.b 1 13 | dc.b $F8, 5, 0, $33, $F8 14 | -------------------------------------------------------------------------------- /levels/GHZ/Buzzbomber/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniBuzzbomber: dc.w byte_7AD8-AniBuzzbomber, byte_7ADC-AniBuzzbomber, byte_7AE0-AniBuzzbomber 2 | 3 | byte_7AD8: dc.b 1, 0, 1, $FF 4 | 5 | byte_7ADC: dc.b 1, 2, 3, $FF 6 | 7 | byte_7AE0: dc.b 1, 4, 5, $FF 8 | -------------------------------------------------------------------------------- /levels/GHZ/Buzzbomber/Sprite.map: -------------------------------------------------------------------------------- 1 | MapBuzzbomber: dc.w byte_7AFC-MapBuzzbomber, byte_7B1B-MapBuzzbomber, byte_7B3A-MapBuzzbomber 2 | dc.w byte_7B5E-MapBuzzbomber, byte_7B82-MapBuzzbomber 3 | dc.w byte_7BA1-MapBuzzbomber 4 | 5 | byte_7AFC: dc.b 6 6 | dc.b $F4, 9, 0, 0, $E8 7 | dc.b $F4, 9, 0, $F, 0 8 | dc.b 4, 8, 0, $15, $E8 9 | dc.b 4, 4, 0, $18, 0 10 | dc.b $F1, 8, 0, $1A, $EC 11 | dc.b $F1, 4, 0, $1D, 4 12 | 13 | byte_7B1B: dc.b 6 14 | dc.b $F4, 9, 0, 0, $E8 15 | dc.b $F4, 9, 0, $F, 0 16 | dc.b 4, 8, 0, $15, $E8 17 | dc.b 4, 4, 0, $18, 0 18 | dc.b $F4, 8, 0, $1F, $EC 19 | dc.b $F4, 4, 0, $22, 4 20 | 21 | byte_7B3A: dc.b 7 22 | 23 | byte_7B3B: dc.b 4, 0, 0, $30, $C 24 | dc.b $F4, 9, 0, 0, $E8 25 | dc.b $F4, 9, 0, $F, 0 26 | dc.b 4, 8, 0, $15, $E8 27 | dc.b 4, 4, 0, $18, 0 28 | dc.b $F1, 8, 0, $1A, $EC 29 | dc.b $F1, 4, 0, $1D, 4 30 | 31 | byte_7B5E: dc.b 7 32 | dc.b 4, 4, 0, $31, $C 33 | dc.b $F4, 9, 0, 0, $E8 34 | dc.b $F4, 9, 0, $F, 0 35 | dc.b 4, 8, 0, $15, $E8 36 | dc.b 4, 4, 0, $18, 0 37 | dc.b $F4, 8, 0, $1F, $EC 38 | dc.b $F4, 4, 0, $22, 4 39 | 40 | byte_7B82: dc.b 6 41 | dc.b $F4, $D, 0, 0, $EC 42 | dc.b 4, $C, 0, 8, $EC 43 | dc.b 4, 0, 0, $C, $C 44 | dc.b $C, 4, 0, $D, $F4 45 | dc.b $F1, 8, 0, $1A, $EC 46 | dc.b $F1, 4, 0, $1D, 4 47 | 48 | byte_7BA1: dc.b 4 49 | dc.b $F4, $D, 0, 0, $EC 50 | dc.b 4, $C, 0, 8, $EC 51 | dc.b 4, 0, 0, $C, $C 52 | dc.b $C, 4, 0, $D, $F4 53 | dc.b $F4, 8, 0, $1F, $EC 54 | dc.b $F4, 4, 0, $22, 4 55 | -------------------------------------------------------------------------------- /levels/GHZ/Chopper/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniChopper: dc.w byte_8C42-AniChopper, byte_8C46-AniChopper, byte_8C4A-AniChopper 2 | 3 | byte_8C42: dc.b 7, 0, 1, $FF 4 | 5 | byte_8C46: dc.b 3, 0, 1, $FF 6 | 7 | byte_8C4A: dc.b 7, 0, $FF 8 | -------------------------------------------------------------------------------- /levels/GHZ/Chopper/Sprite.map: -------------------------------------------------------------------------------- 1 | MapChopper: dc.w byte_8C52-MapChopper, byte_8C58-MapChopper 2 | 3 | byte_8C52: dc.b 1 4 | dc.b $F0, $F, 0, 0, $F0 5 | 6 | byte_8C58: dc.b 1 7 | dc.b $F0, $F, 0, $10, $F0 8 | -------------------------------------------------------------------------------- /levels/GHZ/CollapseFloor/Sprite.map: -------------------------------------------------------------------------------- 1 | MapCollapseFloor:dc.w byte_65AA-MapCollapseFloor, byte_65BF-MapCollapseFloor, byte_65E8-MapCollapseFloor, byte_65FD-MapCollapseFloor 2 | 3 | byte_65AA: dc.b 4 4 | dc.b $F8, $D, 0, 0, $E0 5 | dc.b 8, $D, 0, 0, $E0 6 | dc.b $F8, $D, 0, 0, 0 7 | dc.b 8, $D, 0, 0, 0 8 | 9 | byte_65BF: dc.b 8 10 | dc.b $F8, 5, 0, 0, $E0 11 | dc.b $F8, 5, 0, 0, $F0 12 | dc.b $F8, 5, 0, 0, 0 13 | dc.b $F8, 5, 0, 0, $10 14 | dc.b 8, 5, 0, 0, $E0 15 | dc.b 8, 5, 0, 0, $F0 16 | dc.b 8, 5, 0, 0, 0 17 | dc.b 8, 5, 0, 0, $10 18 | 19 | byte_65E8: dc.b 4 20 | dc.b $F8, $D, 0, 0, $E0 21 | dc.b 8, $D, 0, 8, $E0 22 | dc.b $F8, $D, 0, 0, 0 23 | dc.b 8, $D, 0, 8, 0 24 | 25 | byte_65FD: dc.b 8 26 | dc.b $F8, 5, 0, 0, $E0 27 | dc.b $F8, 5, 0, 4, $F0 28 | dc.b $F8, 5, 0, 0, 0 29 | dc.b $F8, 5, 0, 4, $10 30 | dc.b 8, 5, 0, 8, $E0 31 | dc.b 8, 5, 0, $C, $F0 32 | dc.b 8, 5, 0, 8, 0 33 | dc.b 8, 5, 0, $C, $10 34 | -------------------------------------------------------------------------------- /levels/GHZ/CollapsePtfm/Sprite.map: -------------------------------------------------------------------------------- 1 | MapCollapsePtfm:dc.w byte_6404-MapCollapsePtfm, byte_6455-MapCollapsePtfm, byte_64A6-MapCollapsePtfm, byte_6524-MapCollapsePtfm 2 | 3 | byte_6404: dc.b $10 4 | dc.b $C8, $E, 0, $57, $10 5 | dc.b $D0, $D, 0, $63, $F0 6 | dc.b $E0, $D, 0, $6B, $10 7 | dc.b $E0, $D, 0, $73, $F0 8 | dc.b $D8, 6, 0, $7B, $E0 9 | dc.b $D8, 6, 0, $81, $D0 10 | dc.b $F0, $D, 0, $87, $10 11 | dc.b $F0, $D, 0, $8F, $F0 12 | dc.b $F0, 5, 0, $97, $E0 13 | dc.b $F0, 5, 0, $9B, $D0 14 | dc.b 0, $D, 0, $9F, $10 15 | dc.b 0, 5, 0, $A7, 0 16 | dc.b 0, $D, 0, $AB, $E0 17 | dc.b 0, 5, 0, $B3, $D0 18 | dc.b $10, $D, 0, $AB, $10 19 | dc.b $10, 5, 0, $B7, 0 20 | 21 | byte_6455: dc.b $10 22 | dc.b $C8, $E, 0, $57, $10 23 | dc.b $D0, $D, 0, $63, $F0 24 | dc.b $E0, $D, 0, $6B, $10 25 | dc.b $E0, $D, 0, $73, $F0 26 | dc.b $D8, 6, 0, $7B, $E0 27 | dc.b $D8, 6, 0, $BB, $D0 28 | dc.b $F0, $D, 0, $87, $10 29 | dc.b $F0, $D, 0, $8F, $F0 30 | dc.b $F0, 5, 0, $97, $E0 31 | dc.b $F0, 5, 0, $C1, $D0 32 | dc.b 0, $D, 0, $9F, $10 33 | dc.b 0, 5, 0, $A7, 0 34 | dc.b 0, $D, 0, $AB, $E0 35 | dc.b 0, 5, 0, $B7, $D0 36 | dc.b $10, $D, 0, $AB, $10 37 | dc.b $10, 5, 0, $B7, 0 38 | 39 | byte_64A6: dc.b $19 40 | dc.b $C8, 6, 0, $5D, $20 41 | dc.b $C8, 6, 0, $57, $10 42 | dc.b $D0, 5, 0, $67, 0 43 | dc.b $D0, 5, 0, $63, $F0 44 | dc.b $E0, 5, 0, $6F, $20 45 | dc.b $E0, 5, 0, $6B, $10 46 | dc.b $E0, 5, 0, $77, 0 47 | dc.b $E0, 5, 0, $73, $F0 48 | dc.b $D8, 6, 0, $7B, $E0 49 | dc.b $D8, 6, 0, $81, $D0 50 | dc.b $F0, 5, 0, $8B, $20 51 | dc.b $F0, 5, 0, $87, $10 52 | dc.b $F0, 5, 0, $93, 0 53 | dc.b $F0, 5, 0, $8F, $F0 54 | dc.b $F0, 5, 0, $97, $E0 55 | dc.b $F0, 5, 0, $9B, $D0 56 | dc.b 0, 5, 0, $8B, $20 57 | dc.b 0, 5, 0, $8B, $10 58 | dc.b 0, 5, 0, $A7, 0 59 | dc.b 0, 5, 0, $AB, $F0 60 | dc.b 0, 5, 0, $AB, $E0 61 | dc.b 0, 5, 0, $B3, $D0 62 | dc.b $10, 5, 0, $AB, $20 63 | dc.b $10, 5, 0, $AB, $10 64 | dc.b $10, 5, 0, $B7, 0 65 | 66 | byte_6524: dc.b $19 67 | dc.b $C8, 6, 0, $5D, $20 68 | dc.b $C8, 6, 0, $57, $10 69 | dc.b $D0, 5, 0, $67, 0 70 | dc.b $D0, 5, 0, $63, $F0 71 | dc.b $E0, 5, 0, $6F, $20 72 | dc.b $E0, 5, 0, $6B, $10 73 | dc.b $E0, 5, 0, $77, 0 74 | dc.b $E0, 5, 0, $73, $F0 75 | dc.b $D8, 6, 0, $7B, $E0 76 | dc.b $D8, 6, 0, $BB, $D0 77 | dc.b $F0, 5, 0, $8B, $20 78 | dc.b $F0, 5, 0, $87, $10 79 | dc.b $F0, 5, 0, $93, 0 80 | dc.b $F0, 5, 0, $8F, $F0 81 | dc.b $F0, 5, 0, $97, $E0 82 | dc.b $F0, 5, 0, $C1, $D0 83 | dc.b 0, 5, 0, $8B, $20 84 | dc.b 0, 5, 0, $8B, $10 85 | dc.b 0, 5, 0, $A7, 0 86 | dc.b 0, 5, 0, $AB, $F0 87 | dc.b 0, 5, 0, $AB, $E0 88 | dc.b 0, 5, 0, $B7, $D0 89 | dc.b $10, 5, 0, $AB, $20 90 | dc.b $10, 5, 0, $AB, $10 91 | dc.b $10, 5, 0, $B7, 0 92 | -------------------------------------------------------------------------------- /levels/GHZ/Crabmeat/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniCrabmeat: dc.w byte_77E4-AniCrabmeat, byte_77E8-AniCrabmeat, byte_77EC-AniCrabmeat 2 | dc.w byte_77F0-AniCrabmeat, byte_77F6-AniCrabmeat, byte_77FC-AniCrabmeat 3 | dc.w byte_7802-AniCrabmeat, byte_7806-AniCrabmeat 4 | 5 | byte_77E4: dc.b $F, 0, $FF 6 | even 7 | 8 | byte_77E8: dc.b $F, 2, $FF 9 | even 10 | 11 | byte_77EC: dc.b $F, $22, $FF 12 | even 13 | 14 | byte_77F0: dc.b $F, 1, $21, 0, $FF 15 | even 16 | 17 | byte_77F6: dc.b $F, $21, 3, 2, $FF 18 | even 19 | 20 | byte_77FC: dc.b $F, 1, $23, $22, $FF 21 | even 22 | 23 | byte_7802: dc.b $F, 4, $FF 24 | even 25 | 26 | byte_7806: dc.b 1, 5, 6, $FF 27 | -------------------------------------------------------------------------------- /levels/GHZ/Crabmeat/Sprite.map: -------------------------------------------------------------------------------- 1 | MapCrabmeat: dc.w byte_7818-MapCrabmeat, byte_782D-MapCrabmeat, byte_7842-MapCrabmeat 2 | dc.w byte_7857-MapCrabmeat, byte_786C-MapCrabmeat, byte_788B-MapCrabmeat 3 | dc.w byte_7891-MapCrabmeat 4 | 5 | byte_7818: dc.b 4 6 | dc.b $F0, 9, 0, 0, $E8 7 | dc.b $F0, 9, 8, 0, 0 8 | dc.b 0, 5, 0, 6, $F0 9 | dc.b 0, 5, 8, 6, 0 10 | 11 | byte_782D: dc.b 4 12 | dc.b $F0, 9, 0, $A, $E8 13 | dc.b $F0, 9, 0, $10, 0 14 | dc.b 0, 5, 0, $16, $F0 15 | dc.b 0, 9, 0, $1A, 0 16 | 17 | byte_7842: dc.b 4 18 | dc.b $EC, 9, 0, 0, $E8 19 | dc.b $EC, 9, 8, 0, 0 20 | dc.b $FC, 5, 8, 6, 0 21 | dc.b $FC, 6, 0, $20, $F0 22 | 23 | byte_7857: dc.b 4 24 | dc.b $EC, 9, 0, $A, $E8 25 | dc.b $EC, 9, 0, $10, 0 26 | dc.b $FC, 9, 0, $26, 0 27 | dc.b $FC, 6, 0, $2C, $F0 28 | 29 | byte_786C: dc.b 6 30 | dc.b $F0, 4, 0, $32, $F0 31 | dc.b $F0, 4, 8, $32, 0 32 | dc.b $F8, 9, 0, $34, $E8 33 | dc.b $F8, 9, 8, $34, 0 34 | dc.b 8, 4, 0, $3A, $F0 35 | dc.b 8, 4, 8, $3A, 0 36 | 37 | byte_788B: dc.b 1 38 | dc.b $F8, 5, 0, $3C, $F8 39 | 40 | byte_7891: dc.b 1 41 | dc.b $F8, 5, 0, $40, $F8 42 | -------------------------------------------------------------------------------- /levels/GHZ/Motobug/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniMotobug: dc.w byte_B9F0-AniMotobug, byte_B9F4-AniMotobug, byte_B9FA-AniMotobug 2 | 3 | byte_B9F0: dc.b $F, 2, $FF 4 | even 5 | 6 | byte_B9F4: dc.b 7, 0, 1, 0, 2, $FF 7 | 8 | byte_B9FA: dc.b 1, 3, 6, 3, 6, 4, 6, 4, 6, 4, 6, 5, $FC, 0 9 | -------------------------------------------------------------------------------- /levels/GHZ/Motobug/Sprite.map: -------------------------------------------------------------------------------- 1 | MapMotobug: dc.w byte_BA16-MapMotobug, byte_BA2B-MapMotobug, byte_BA40-MapMotobug 2 | dc.w byte_BA5A-MapMotobug, byte_BA60-MapMotobug, byte_BA66-MapMotobug 3 | dc.w byte_BA6C-MapMotobug 4 | 5 | byte_BA16: dc.b 4 6 | dc.b $F0, $D, 0, 0, $EC 7 | dc.b 0, $C, 0, 8, $EC 8 | dc.b $F8, 1, 0, $C, $C 9 | dc.b 8, 8, 0, $E, $F4 10 | 11 | byte_BA2B: dc.b 4 12 | dc.b $F1, $D, 0, 0, $EC 13 | dc.b 1, $C, 0, 8, $EC 14 | dc.b $F9, 1, 0, $C, $C 15 | dc.b 9, 8, 0, $11, $F4 16 | 17 | byte_BA40: dc.b 5 18 | dc.b $F0, $D, 0, 0, $EC 19 | dc.b 0, $C, 0, $14, $EC 20 | dc.b $F8, 1, 0, $C, $C 21 | dc.b 8, 4, 0, $18, $EC 22 | dc.b 8, 4, 0, $12, $FC 23 | 24 | byte_BA5A: dc.b 1 25 | dc.b $FA, 0, 0, $1A, $10 26 | 27 | byte_BA60: dc.b 1 28 | dc.b $FA, 0, 0, $1B, $10 29 | 30 | byte_BA66: dc.b 1 31 | dc.b $FA, 0, 0, $1C, $10 32 | 33 | byte_BA6C: dc.b 0 34 | -------------------------------------------------------------------------------- /levels/GHZ/MovingPtfm/Sprite.map: -------------------------------------------------------------------------------- 1 | MapMovingPtfm: dc.w byte_D6E4-MapMovingPtfm, byte_D6EA-MapMovingPtfm 2 | 3 | byte_D6E4: dc.b 1 4 | dc.b $F8, $F, 0, 8, $F0 5 | 6 | byte_D6EA: dc.b 2 7 | dc.b $F8, $F, 0, 8, $E0 8 | dc.b $F8, $F, 0, 8, 0 9 | -------------------------------------------------------------------------------- /levels/GHZ/Newtron/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniNewtron: dc.w byte_BED4-AniNewtron, byte_BED8-AniNewtron, byte_BEE0-AniNewtron 2 | dc.w byte_BEE4-AniNewtron, byte_BEE8-AniNewtron 3 | 4 | byte_BED4: dc.b $F, $A, $FF 5 | even 6 | 7 | byte_BED8: dc.b $13, 0, 1, 3, 4, 5, $FE, 1 8 | 9 | byte_BEE0: dc.b 2, 6, 7, $FF 10 | 11 | byte_BEE4: dc.b 2, 8, 9, $FF 12 | 13 | byte_BEE8: dc.b $13, 0, 1, 1, 2, 1, 1, 0, $FC, 0 14 | -------------------------------------------------------------------------------- /levels/GHZ/Newtron/Sprite.map: -------------------------------------------------------------------------------- 1 | MapNewtron: dc.w byte_BF08-MapNewtron, byte_BF18-MapNewtron, byte_BF28-MapNewtron 2 | dc.w byte_BF38-MapNewtron, byte_BF4D-MapNewtron, byte_BF5D-MapNewtron 3 | dc.w byte_BF68-MapNewtron, byte_BF78-MapNewtron, byte_BF88-MapNewtron 4 | dc.w byte_BF98-MapNewtron, byte_BFA8-MapNewtron 5 | 6 | byte_BF08: dc.b 3 7 | dc.b $EC, $D, 0, 0, $EC 8 | dc.b $F4, 0, 0, 8, $C 9 | dc.b $FC, $E, 0, 9, $F4 10 | 11 | byte_BF18: dc.b 3 12 | dc.b $EC, 6, 0, $15, $EC 13 | dc.b $EC, 9, 0, $1B, $FC 14 | dc.b $FC, $A, 0, $21, $FC 15 | 16 | byte_BF28: dc.b 3 17 | dc.b $EC, 6, 0, $2A, $EC 18 | dc.b $EC, 9, 0, $1B, $FC 19 | dc.b $FC, $A, 0, $21, $FC 20 | 21 | byte_BF38: dc.b 4 22 | dc.b $EC, 6, 0, $30, $EC 23 | dc.b $EC, 9, 0, $1B, $FC 24 | dc.b $FC, 9, 0, $36, $FC 25 | dc.b $C, 0, 0, $3C, $C 26 | 27 | byte_BF4D: dc.b 3 28 | dc.b $F4, $D, 0, $3D, $EC 29 | dc.b $FC, 0, 0, $20, $C 30 | dc.b 4, 8, 0, $45, $FC 31 | 32 | byte_BF5D: dc.b 2 33 | dc.b $F8, $D, 0, $48, $EC 34 | dc.b $F8, 1, 0, $50, $C 35 | 36 | byte_BF68: dc.b 3 37 | dc.b $F8, $D, 0, $48, $EC 38 | dc.b $F8, 1, 0, $50, $C 39 | dc.b $FE, 0, 0, $52, $14 40 | 41 | byte_BF78: dc.b 3 42 | dc.b $F8, $D, 0, $48, $EC 43 | dc.b $F8, 1, 0, $50, $C 44 | dc.b $FE, 4, 0, $53, $14 45 | 46 | byte_BF88: dc.b 3 47 | dc.b $F8, $D, 0, $48, $EC 48 | dc.b $F8, 1, 0, $50, $C 49 | dc.b $FE, 0, $E0, $52, $14 50 | 51 | byte_BF98: dc.b 3 52 | dc.b $F8, $D, 0, $48, $EC 53 | dc.b $F8, 1, 0, $50, $C 54 | dc.b $FE, 4, $E0, $53, $14 55 | 56 | byte_BFA8: dc.b 0 57 | -------------------------------------------------------------------------------- /levels/GHZ/PurpleRock/Sprite.map: -------------------------------------------------------------------------------- 1 | MapPurpleRock: dc.w byte_ADCC-MapPurpleRock 2 | 3 | byte_ADCC: dc.b 2 4 | dc.b $F0, $B, 0, 0, $E8 5 | dc.b $F0, $B, 0, $C, 0 6 | -------------------------------------------------------------------------------- /levels/GHZ/RollingBall/Sprite.map: -------------------------------------------------------------------------------- 1 | MapRollingBall: dc.w byte_5E82-MapRollingBall, byte_5EA1-MapRollingBall, byte_5EB6-MapRollingBall, byte_5ECB-MapRollingBall 2 | 3 | byte_5E82: dc.b 6 4 | dc.b $F0, 4, 0, $24, $F0 5 | dc.b $F8, 4, $10, $24, $F0 6 | dc.b $E8, $A, 0, 0, $E8 7 | dc.b $E8, $A, 8, 0, 0 8 | dc.b 0, $A, $10, 0, $E8 9 | dc.b 0, $A, $18, 0, 0 10 | 11 | byte_5EA1: dc.b 4 12 | dc.b $E8, $A, 0, 9, $E8 13 | dc.b $E8, $A, 8, 9, 0 14 | dc.b 0, $A, $10, 9, $E8 15 | dc.b 0, $A, $18, 9, 0 16 | 17 | byte_5EB6: dc.b 4 18 | dc.b $E8, $A, 0, $12, $E8 19 | dc.b $E8, $A, 0, $1B, 0 20 | dc.b 0, $A, $18, $1B, $E8 21 | dc.b 0, $A, $18, $12, 0 22 | 23 | byte_5ECB: dc.b 4 24 | dc.b $E8, $A, 8, $1B, $E8 25 | dc.b $E8, $A, 8, $12, 0 26 | dc.b 0, $A, $10, $12, $E8 27 | dc.b 0, $A, $10, $1B, 0 28 | -------------------------------------------------------------------------------- /levels/GHZ/SmashBlock/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSmashBlock: dc.w byte_D5AC-MapSmashBlock, byte_D5B7-MapSmashBlock 2 | 3 | byte_D5AC: dc.b 2 4 | dc.b $F0, $D, 0, 0, $F0 5 | dc.b 0, $D, 0, 0, $F0 6 | 7 | byte_D5B7: dc.b 4 8 | dc.b $F0, 5, $80, 0, $F0 9 | dc.b 0, 5, $80, 0, $F0 10 | dc.b $F0, 5, $80, 0, 0 11 | dc.b 0, 5, $80, 0, 0 12 | -------------------------------------------------------------------------------- /levels/GHZ/SmashWall/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSmashWall: dc.w byte_AF78-MapSmashWall, byte_AFA1-MapSmashWall, byte_AFCA-MapSmashWall 2 | 3 | byte_AF78: dc.b 8 4 | dc.b $E0, 5, 0, 0, $F0 5 | dc.b $F0, 5, 0, 0, $F0 6 | dc.b 0, 5, 0, 0, $F0 7 | dc.b $10, 5, 0, 0, $F0 8 | dc.b $E0, 5, 0, 4, 0 9 | dc.b $F0, 5, 0, 4, 0 10 | dc.b 0, 5, 0, 4, 0 11 | dc.b $10, 5, 0, 4, 0 12 | 13 | byte_AFA1: dc.b 8 14 | dc.b $E0, 5, 0, 4, $F0 15 | dc.b $F0, 5, 0, 4, $F0 16 | dc.b 0, 5, 0, 4, $F0 17 | dc.b $10, 5, 0, 4, $F0 18 | dc.b $E0, 5, 0, 4, 0 19 | dc.b $F0, 5, 0, 4, 0 20 | dc.b 0, 5, 0, 4, 0 21 | dc.b $10, 5, 0, 4, 0 22 | 23 | byte_AFCA: dc.b 8 24 | dc.b $E0, 5, 0, 4, $F0 25 | dc.b $F0, 5, 0, 4, $F0 26 | dc.b 0, 5, 0, 4, $F0 27 | dc.b $10, 5, 0, 4, $F0 28 | dc.b $E0, 5, 0, 8, 0 29 | dc.b $F0, 5, 0, 8, 0 30 | dc.b 0, 5, 0, 8, 0 31 | dc.b $10, 5, 0, 8, 0 32 | -------------------------------------------------------------------------------- /levels/GHZ/SpikeLogs/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSpikeLogs: dc.w byte_58E0-MapSpikeLogs, byte_58E6-MapSpikeLogs, byte_58EC-MapSpikeLogs 2 | dc.w byte_58F2-MapSpikeLogs, byte_58F8-MapSpikeLogs, byte_58FE-MapSpikeLogs 3 | dc.w byte_5905+1-MapSpikeLogs, byte_5904-MapSpikeLogs 4 | 5 | byte_58E0: dc.b 1 6 | dc.b $F0, 1, 0, 0, $FC 7 | 8 | byte_58E6: dc.b 1 9 | dc.b $F5, 5, 0, 2, $F8 10 | 11 | byte_58EC: dc.b 1 12 | dc.b $F8, 5, 0, 6, $F8 13 | 14 | byte_58F2: dc.b 1 15 | dc.b $FB, 5, 0, $A, $F8 16 | 17 | byte_58F8: dc.b 1 18 | dc.b 0, 1, 0, $E, $FC 19 | 20 | byte_58FE: dc.b 1 21 | dc.b 4, 0, 0, $10, $FD 22 | 23 | byte_5904: dc.b 1 24 | 25 | byte_5905: dc.b $F4, 0, 0, $11, $FD 26 | -------------------------------------------------------------------------------- /levels/GHZ/Wall/Sprite.map: -------------------------------------------------------------------------------- 1 | MapWall: dc.w byte_C17E-MapWall, byte_C193-MapWall, byte_C1A8-MapWall 2 | 3 | byte_C17E: dc.b 4 4 | dc.b $E0, 5, 0, 4, $F8 5 | dc.b $F0, 5, 0, 8, $F8 6 | dc.b 0, 5, 0, 8, $F8 7 | dc.b $10, 5, 0, 8, $F8 8 | 9 | byte_C193: dc.b 4 10 | dc.b $E0, 5, 0, 8, $F8 11 | dc.b $F0, 5, 0, 8, $F8 12 | dc.b 0, 5, 0, 8, $F8 13 | dc.b $10, 5, 0, 8, $F8 14 | 15 | byte_C1A8: dc.b 4 16 | dc.b $E0, 5, 0, 0, $F8 17 | dc.b $F0, 5, 0, 0, $F8 18 | dc.b 0, 5, 0, 0, $F8 19 | dc.b $10, 5, 0, 0, $F8 20 | -------------------------------------------------------------------------------- /levels/LZ/Burrobot/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniBurrobot: dc.w byte_8E54-AniBurrobot, byte_8E58-AniBurrobot, byte_8E5C-AniBurrobot, byte_8E60-AniBurrobot 2 | 3 | byte_8E54: dc.b 3, 0, 6, $FF 4 | 5 | byte_8E58: dc.b 3, 0, 1, $FF 6 | 7 | byte_8E5C: dc.b 3, 2, 3, $FF 8 | 9 | byte_8E60: dc.b 3, 4, $FF 10 | -------------------------------------------------------------------------------- /levels/LZ/Burrobot/Sprite.map: -------------------------------------------------------------------------------- 1 | MapBurrobot: dc.w byte_8E72-MapBurrobot, byte_8E7D-MapBurrobot, byte_8E88-MapBurrobot 2 | dc.w byte_8E93-MapBurrobot, byte_8E9E-MapBurrobot, byte_8EA9-MapBurrobot 3 | dc.w byte_8EB4-MapBurrobot 4 | 5 | byte_8E72: dc.b 2 6 | dc.b $EC, $A, 0, 0, $F0 7 | dc.b 4, 9, 0, 9, $F4 8 | 9 | byte_8E7D: dc.b 2 10 | dc.b $EC, $A, 0, $F, $F0 11 | dc.b 4, 9, 0, $18, $F4 12 | 13 | byte_8E88: dc.b 2 14 | dc.b $E8, $A, 0, $1E, $F4 15 | dc.b 0, $A, 0, $27, $F4 16 | 17 | byte_8E93: dc.b 2 18 | 19 | byte_8E94: dc.b $E8, $A, 0, $30, $F4 20 | dc.b 0, $A, 0, $39, $F4 21 | 22 | byte_8E9E: dc.b 2 23 | dc.b $E8, $A, 0, $F, $F0 24 | dc.b 0, $A, 0, $42, $F4 25 | 26 | byte_8EA9: dc.b 2 27 | dc.b $F4, 6, 0, $4B, $E8 28 | dc.b $F4, $A, 0, $51, $F8 29 | 30 | byte_8EB4: dc.b 2 31 | dc.b $EC, $A, 0, $F, $F0 32 | dc.b 4, 9, 0, 9, $F4 33 | -------------------------------------------------------------------------------- /levels/LZ/Jaws/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniJaws: dc.w byte_8CB4-AniJaws 2 | 3 | byte_8CB4: dc.b 7, 0, 1, 2, 3, $FF 4 | -------------------------------------------------------------------------------- /levels/LZ/Jaws/Sprite.map: -------------------------------------------------------------------------------- 1 | MapJaws: dc.w byte_8CC2-MapJaws, byte_8CCD-MapJaws, byte_8CD8-MapJaws, byte_8CE3-MapJaws 2 | 3 | byte_8CC2: dc.b 2 4 | dc.b $F4, $E, 0, 0, $F0 5 | dc.b $F5, 5, 0, $18, $10 6 | 7 | byte_8CCD: dc.b 2 8 | dc.b $F4, $E, 0, $C, $F0 9 | dc.b $F5, 5, 0, $1C, $10 10 | 11 | byte_8CD8: dc.b 2 12 | dc.b $F4, $E, 0, 0, $F0 13 | dc.b $F5, 5, $10, $18, $10 14 | 15 | byte_8CE3: dc.b 2 16 | dc.b $F4, $E, 0, $C, $F0 17 | dc.b $F5, 5, $10, $1C, $10 18 | -------------------------------------------------------------------------------- /levels/MZ/Basaran/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniBasaran: dc.w byte_D87E-AniBasaran, byte_D882-AniBasaran, byte_D886-AniBasaran 2 | 3 | byte_D87E: dc.b $F, 0, $FF 4 | even 5 | 6 | byte_D882: dc.b $F, 1, $FF 7 | even 8 | 9 | byte_D886: dc.b 3, 1, 2, 3, 2, $FF 10 | -------------------------------------------------------------------------------- /levels/MZ/Basaran/Sprite.map: -------------------------------------------------------------------------------- 1 | MapBasaran: dc.w byte_D894-MapBasaran, byte_D89A-MapBasaran, byte_D8AA-MapBasaran, byte_D8BF-MapBasaran 2 | 3 | byte_D894: dc.b 1 4 | dc.b $F4, 6, 0, 0, $F8 5 | 6 | byte_D89A: dc.b 3 7 | dc.b $F2, $E, 0, 6, $F4 8 | dc.b $A, 4, 0, $12, $FC 9 | dc.b 2, 0, 0, $27, $C 10 | 11 | byte_D8AA: dc.b 4 12 | dc.b $F8, 4, 0, $14, $F8 13 | dc.b 0, $C, 0, $16, $F0 14 | dc.b 8, 4, 0, $1A, 0 15 | dc.b 0, 0, 0, $28, $C 16 | 17 | byte_D8BF: dc.b 4 18 | dc.b $F6, 9, 0, $1C, $F5 19 | dc.b 6, 8, 0, $22, $F4 20 | dc.b $E, 4, 0, $25, $F4 21 | dc.b $FE, 0, 0, $27, $C 22 | -------------------------------------------------------------------------------- /levels/MZ/Blocks/Sprite.map: -------------------------------------------------------------------------------- 1 | MapMZBlocks: dc.w byte_C524-MapMZBlocks 2 | 3 | byte_C524: dc.b 1 4 | dc.b $F0, $F, 0, 1, $F0 5 | -------------------------------------------------------------------------------- /levels/MZ/ChainPtfm/Sprite.map: -------------------------------------------------------------------------------- 1 | MapChainPtfm: dc.w byte_9B9A-MapChainPtfm, byte_9BB4-MapChainPtfm, byte_9BCE-MapChainPtfm 2 | dc.w byte_9BD4-MapChainPtfm, byte_9BDF-MapChainPtfm, byte_9BF4-MapChainPtfm 3 | dc.w byte_9C13-MapChainPtfm, byte_9C3C-MapChainPtfm, byte_9C3C-MapChainPtfm 4 | dc.w byte_9C6F-MapChainPtfm, byte_9C89-MapChainPtfm 5 | 6 | byte_9B9A: dc.b 5 7 | dc.b $F4, 6, 0, 0, $C8 8 | dc.b $F4, $A, 0, 6, $D8 9 | dc.b $EC, $F, 0, $F, $F0 10 | dc.b $F4, $A, 8, 6, $10 11 | dc.b $F4, 6, 8, 0, $28 12 | 13 | byte_9BB4: dc.b 5 14 | dc.b $F0, 3, $12, $1F, $D4 15 | dc.b $F0, 3, $12, $1F, $E8 16 | dc.b $F0, 3, $12, $1F, $FC 17 | dc.b $F0, 3, $12, $1F, $10 18 | dc.b $F0, 3, $12, $1F, $24 19 | 20 | byte_9BCE: dc.b 1 21 | dc.b $DC, $F, $10, $F, $F0 22 | 23 | byte_9BD4: dc.b 2 24 | dc.b 0, 1, 0, $3F, $FC 25 | dc.b $10, 1, 0, $3F, $FC 26 | 27 | byte_9BDF: dc.b 4 28 | dc.b $E0, 1, 0, $3F, $FC 29 | dc.b $F0, 1, 0, $3F, $FC 30 | dc.b 0, 1, 0, $3F, $FC 31 | dc.b $10, 1, 0, $3F, $FC 32 | 33 | byte_9BF4: dc.b 6 34 | dc.b $C0, 1, 0, $3F, $FC 35 | dc.b $D0, 1, 0, $3F, $FC 36 | dc.b $E0, 1, 0, $3F, $FC 37 | dc.b $F0, 1, 0, $3F, $FC 38 | dc.b 0, 1, 0, $3F, $FC 39 | dc.b $10, 1, 0, $3F, $FC 40 | 41 | byte_9C13: dc.b 8 42 | dc.b $A0, 1, 0, $3F, $FC 43 | dc.b $B0, 1, 0, $3F, $FC 44 | dc.b $C0, 1, 0, $3F, $FC 45 | dc.b $D0, 1, 0, $3F, $FC 46 | dc.b $E0, 1, 0, $3F, $FC 47 | dc.b $F0, 1, 0, $3F, $FC 48 | dc.b 0, 1, 0, $3F, $FC 49 | dc.b $10, 1, 0, $3F, $FC 50 | 51 | byte_9C3C: dc.b $A 52 | dc.b $80, 1, 0, $3F, $FC 53 | dc.b $90, 1, 0, $3F, $FC 54 | dc.b $A0, 1, 0, $3F, $FC 55 | dc.b $B0, 1, 0, $3F, $FC 56 | dc.b $C0, 1, 0, $3F, $FC 57 | dc.b $D0, 1, 0, $3F, $FC 58 | dc.b $E0, 1, 0, $3F, $FC 59 | dc.b $F0, 1, 0, $3F, $FC 60 | dc.b 0, 1, 0, $3F, $FC 61 | dc.b $10, 1, 0, $3F, $FC 62 | 63 | byte_9C6F: dc.b 5 64 | dc.b $F4, 6, 0, 0, $D0 65 | dc.b $F4, $A, 0, 6, $E0 66 | dc.b $F4, $A, 8, 6, 8 67 | dc.b $F4, 6, 8, 0, $20 68 | dc.b $EC, $F, 0, $F, $F0 69 | 70 | byte_9C89: dc.b 1 71 | dc.b $EC, $F, 0, $2F, $F0 72 | -------------------------------------------------------------------------------- /levels/MZ/FloorLavaball/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniFloorLavaball:dc.w byte_92D6-AniFloorLavaball 2 | 3 | byte_92D6: dc.b 5, 0, $20, 1, $21, $FF 4 | -------------------------------------------------------------------------------- /levels/MZ/FloorLavaball/Sprite.map: -------------------------------------------------------------------------------- 1 | MapLavaball: dc.w byte_9382-MapLavaball, byte_9388-MapLavaball, byte_938E-MapLavaball 2 | dc.w byte_9394-MapLavaball, byte_939A-MapLavaball, byte_93A0-MapLavaball 3 | 4 | byte_9382: dc.b 1 5 | dc.b $E8, 7, 0, 0, $F8 6 | 7 | byte_9388: dc.b 1 8 | dc.b $E8, 7, 0, 8, $F8 9 | 10 | byte_938E: dc.b 1 11 | dc.b $F0, 6, 0, $10, $F8 12 | 13 | byte_9394: dc.b 1 14 | dc.b $F8, $D, 0, $16, $E8 15 | 16 | byte_939A: dc.b 1 17 | dc.b $F8, $D, 0, $1E, $E8 18 | 19 | byte_93A0: dc.b 1 20 | dc.b $F8, 9, 0, $26, $F0 21 | -------------------------------------------------------------------------------- /levels/MZ/GlassBlock/Sprite.map: -------------------------------------------------------------------------------- 1 | MapGlassBlock: dc.w byte_9638-MapGlassBlock, byte_9657-MapGlassBlock, byte_9676-MapGlassBlock, byte_9681-MapGlassBlock 2 | 3 | byte_9638: dc.b 6 4 | dc.b $DC, $C, 0, 0, $E0 5 | dc.b $DC, $C, 8, 0, 0 6 | dc.b $E4, $F, 0, 4, $E0 7 | dc.b $E4, $F, 8, 4, 0 8 | dc.b 4, $F, 0, 4, $E0 9 | dc.b 4, $F, 8, 4, 0 10 | 11 | byte_9657: dc.b 6 12 | dc.b $DC, $F, 0, 4, $E0 13 | dc.b $DC, $F, 8, 4, 0 14 | dc.b $FC, $F, 0, 4, $E0 15 | dc.b $FC, $F, 8, 4, 0 16 | dc.b $1C, $C, $10, 0, $E0 17 | dc.b $1C, $C, $18, 0, 0 18 | 19 | byte_9676: dc.b 2 20 | dc.b 8, 6, 0, $14, $F0 21 | dc.b 0, 6, 0, $14, 0 22 | 23 | byte_9681: dc.b $A 24 | dc.b $C8, $C, 0, 0, $E0 25 | dc.b $C8, $C, 8, 0, 0 26 | dc.b $D0, $F, 0, 4, $E0 27 | dc.b $D0, $F, 8, 4, 0 28 | dc.b $F0, $F, 0, 4, $E0 29 | dc.b $F0, $F, 8, 4, 0 30 | dc.b $10, $F, 0, 4, $E0 31 | dc.b $10, $F, 8, 4, 0 32 | dc.b $30, $C, $10, 0, $E0 33 | dc.b $30, $C, $18, 0, 0 34 | -------------------------------------------------------------------------------- /levels/MZ/LavaBall/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniLavaball: dc.w byte_C3DA-AniLavaball, byte_C3E0-AniLavaball, byte_C3E4-AniLavaball, byte_C3EA-AniLavaball 2 | 3 | byte_C3DA: dc.b 5, 0, $20, 1, $21, $FF 4 | 5 | byte_C3E0: dc.b 5, 2, $FC, 0 6 | 7 | byte_C3E4: dc.b 5, 3, $43, 4, $44, $FF 8 | 9 | byte_C3EA: dc.b 5, 5, $FC, 0 10 | -------------------------------------------------------------------------------- /levels/MZ/LavaChase/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniLavaChase: dc.w byte_CE1E-AniLavaChase 2 | 3 | byte_CE1E: dc.b 9, 0, 1, 2, 3, $FF 4 | -------------------------------------------------------------------------------- /levels/MZ/LavaChase/Sprite.map: -------------------------------------------------------------------------------- 1 | MapLavaChase: dc.w byte_D112-MapLavaChase, byte_D140-MapLavaChase, byte_D16E-MapLavaChase, byte_D19C-MapLavaChase 2 | dc.w byte_D1CA-MapLavaChase 3 | 4 | byte_D112: dc.b 9 5 | dc.b $E0, $F, 0, $60, $20 6 | dc.b 0, $F, 0, $70, $3C 7 | dc.b 0, $F, $FF, $2A, $20 8 | dc.b $E0, $F, $FF, $2A, 0 9 | dc.b 0, $F, $FF, $2A, 0 10 | dc.b $E0, $F, $FF, $2A, $E0 11 | dc.b 0, $F, $FF, $2A, $E0 12 | dc.b $E0, $F, $FF, $2A, $C0 13 | dc.b 0, $F, $FF, $2A, $C0 14 | 15 | byte_D140: dc.b 9 16 | dc.b $E0, $F, 0, $70, $20 17 | dc.b 0, $F, 0, $80, $3C 18 | dc.b 0, $F, $FF, $2A, $20 19 | dc.b $E0, $F, $FF, $2A, 0 20 | dc.b 0, $F, $FF, $2A, 0 21 | dc.b $E0, $F, $FF, $2A, $E0 22 | dc.b 0, $F, $FF, $2A, $E0 23 | dc.b $E0, $F, $FF, $2A, $C0 24 | dc.b 0, $F, $FF, $2A, $C0 25 | 26 | byte_D16E: dc.b 9 27 | dc.b $E0, $F, 0, $80, $20 28 | dc.b 0, $F, 0, $70, $3C 29 | dc.b 0, $F, $FF, $2A, $20 30 | dc.b $E0, $F, $FF, $2A, 0 31 | dc.b 0, $F, $FF, $2A, 0 32 | dc.b $E0, $F, $FF, $2A, $E0 33 | dc.b 0, $F, $FF, $2A, $E0 34 | dc.b $E0, $F, $FF, $2A, $C0 35 | dc.b 0, $F, $FF, $2A, $C0 36 | 37 | byte_D19C: dc.b 9 38 | dc.b $E0, $F, 0, $70, $20 39 | dc.b 0, $F, 0, $60, $3C 40 | dc.b 0, $F, $FF, $2A, $20 41 | dc.b $E0, $F, $FF, $2A, 0 42 | dc.b 0, $F, $FF, $2A, 0 43 | dc.b $E0, $F, $FF, $2A, $E0 44 | dc.b 0, $F, $FF, $2A, $E0 45 | dc.b $E0, $F, $FF, $2A, $C0 46 | dc.b 0, $F, $FF, $2A, $C0 47 | 48 | byte_D1CA: dc.b 8 49 | dc.b $E0, $F, $FF, $2A, $20 50 | dc.b 0, $F, $FF, $2A, $20 51 | dc.b $E0, $F, $FF, $2A, 0 52 | dc.b 0, $F, $FF, $2A, 0 53 | dc.b $E0, $F, $FF, $2A, $E0 54 | dc.b 0, $F, $FF, $2A, $E0 55 | dc.b $E0, $F, $FF, $2A, $C0 56 | dc.b 0, $F, $FF, $2A, $C0 57 | -------------------------------------------------------------------------------- /levels/MZ/LavaFall/Maker.ani: -------------------------------------------------------------------------------- 1 | AniLavaFallMaker:dc.w byte_CDFA-AniLavaFallMaker, byte_CE04-AniLavaFallMaker, byte_CE08-AniLavaFallMaker, byte_CE0C-AniLavaFallMaker 2 | dc.w byte_CE14-AniLavaFallMaker, byte_CE18-AniLavaFallMaker 3 | 4 | byte_CDFA: dc.b 2, 0, 1, 0, 1, 4, 5, 4, 5, $FC 5 | 6 | byte_CE04: dc.b 2, 2, 3, $FF 7 | 8 | byte_CE08: dc.b 2, 6, 7, $FF 9 | 10 | byte_CE0C: dc.b 2, 2, 3, 0, 1, 0, 1, $FC 11 | 12 | byte_CE14: dc.b $F, $13, $FF 13 | even 14 | 15 | byte_CE18: dc.b 2, $11, $12, $FF 16 | -------------------------------------------------------------------------------- /levels/MZ/LavaHurt/Sprite.map: -------------------------------------------------------------------------------- 1 | MapLavaHurt: dc.w byte_CDAE-MapLavaHurt, byte_CDC3-MapLavaHurt, byte_CDD8-MapLavaHurt 2 | 3 | byte_CDAE: dc.b 4 4 | dc.b $E0, 5, 0, $18, $E0 5 | dc.b $E0, 5, 0, $18, $10 6 | dc.b $10, 5, 0, $18, $E0 7 | dc.b $10, 5, 0, $18, $10 8 | 9 | byte_CDC3: dc.b 4 10 | dc.b $E0, 5, 0, $18, $C0 11 | dc.b $E0, 5, 0, $18, $30 12 | dc.b $10, 5, 0, $18, $C0 13 | dc.b $10, 5, 0, $18, $30 14 | 15 | byte_CDD8: dc.b 4 16 | dc.b $E0, 5, 0, $18, $80 17 | dc.b $E0, 5, 0, $18, $70 18 | dc.b $10, 5, 0, $18, $80 19 | dc.b $10, 5, 0, $18, $70 20 | even 21 | -------------------------------------------------------------------------------- /levels/MZ/Platform/Sprite.map: -------------------------------------------------------------------------------- 1 | MapMZPlatforms: dc.w byte_92E2-MapMZPlatforms, byte_9324-MapMZPlatforms, byte_9357-MapMZPlatforms 2 | 3 | byte_92E2: dc.b $D 4 | dc.b $D8, 6, 0, $57, $C0 5 | dc.b $F0, 5, 0, $53, $C0 6 | dc.b 0, $F, 0, 1, $C0 7 | dc.b $D0, $F, 0, $27, $D0 8 | dc.b $F0, $D, 0, $37, $D0 9 | dc.b $F0, $F, 0, 1, $E0 10 | dc.b $D0, $F, 0, $11, $F0 11 | dc.b $D0, $F, 0, $3F, $10 12 | dc.b $F0, $D, 0, $4F, $10 13 | dc.b $F0, $F, 0, 1, 0 14 | dc.b 0, $F, 0, 1, $20 15 | dc.b $D8, 6, 0, $57, $30 16 | dc.b $F0, 5, 0, $53, $30 17 | 18 | byte_9324: dc.b $A 19 | dc.b $D0, $F, 0, $27, $C0 20 | dc.b $F0, $D, 0, $37, $C0 21 | dc.b 0, $F, 0, 1, $C0 22 | dc.b $C0, $F, 0, $27, $E0 23 | dc.b $E0, $D, 0, $37, $E0 24 | dc.b $F0, $F, 0, 1, $E0 25 | dc.b $C0, $F, 0, $11, 0 26 | dc.b $E0, $F, 0, 1, 0 27 | dc.b $C0, $F, 0, $3F, $20 28 | dc.b $E0, $D, 0, $4F, $20 29 | 30 | byte_9357: dc.b 6 31 | dc.b $D0, $F, 0, $11, $E0 32 | dc.b $F0, $F, 0, 1, $E0 33 | dc.b $10, $F, 0, 1, $E0 34 | dc.b $D0, $F, 0, $11, 0 35 | dc.b $F0, $F, 0, 1, 0 36 | dc.b $10, $F, 0, 1, 0 37 | -------------------------------------------------------------------------------- /levels/MZ/PushBlock/Sprite.map: -------------------------------------------------------------------------------- 1 | MapPushBlock: dc.w byte_A2A0-MapPushBlock, byte_A2A6-MapPushBlock 2 | 3 | byte_A2A0: dc.b 1 4 | dc.b $F0, $F, 0, 8, $F0 5 | 6 | byte_A2A6: dc.b 4 7 | dc.b $F0, $F, 0, 8, $C0 8 | dc.b $F0, $F, 0, 8, $E0 9 | dc.b $F0, $F, 0, 8, 0 10 | dc.b $F0, $F, 0, 8, $20 11 | -------------------------------------------------------------------------------- /levels/SLZ/CirclePtfm/Sprite.map: -------------------------------------------------------------------------------- 1 | MapCirclePtfm: dc.w byte_E31C-MapCirclePtfm 2 | 3 | byte_E31C: dc.b 2 4 | dc.b $F8, 9, 0, $51, $E8 5 | dc.b $F8, 9, 8, $51, 0 6 | -------------------------------------------------------------------------------- /levels/SLZ/Fan/Sprite.map: -------------------------------------------------------------------------------- 1 | MapFan: dc.w byte_E67C-MapFan, byte_E687-MapFan, byte_E692-MapFan 2 | dc.w byte_E687-MapFan, byte_E67C-MapFan 3 | 4 | byte_E67C: dc.b 2 5 | dc.b $F0, 9, 0, 0, $F8 6 | dc.b 0, $D, 0, 6, $F0 7 | 8 | byte_E687: dc.b 2 9 | dc.b $F0, $D, 0, $E, $F0 10 | dc.b 0, $D, 0, $16, $F0 11 | 12 | byte_E692: dc.b 2 13 | dc.b $F0, $D, 0, $1E, $F0 14 | dc.b 0, 9, 0, $26, $F8 15 | -------------------------------------------------------------------------------- /levels/SLZ/Girder/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSLZGirder: dc.w byte_E530-MapSLZGirder 2 | 3 | byte_E530: dc.b 9 4 | dc.b $80, $F, 0, 0, $F0 5 | dc.b $A0, $F, $10, 0, $F0 6 | dc.b $C0, $F, 0, 0, $F0 7 | dc.b $E0, $F, $10, 0, $F0 8 | dc.b 0, $F, 0, 0, $F0 9 | dc.b $20, $F, $10, 0, $F0 10 | dc.b $40, $F, 0, 0, $F0 11 | dc.b $60, $F, $10, 0, $F0 12 | dc.b $7F, $F, 0, 0, $F0 13 | -------------------------------------------------------------------------------- /levels/SLZ/MovingPtfm/Srite.map: -------------------------------------------------------------------------------- 1 | MapSLZMovingPtfm:dc.w byte_E1E2-MapSLZMovingPtfm 2 | 3 | byte_E1E2: dc.b 3 4 | dc.b $F8, $F, 0, $41, $D8 5 | dc.b $F8, $F, 0, $41, $F8 6 | dc.b $F8, 7, 0, $41, $18 7 | -------------------------------------------------------------------------------- /levels/SLZ/Seesaw/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSeesaw: dc.w byte_E7D6-MapSeesaw, byte_E7FA-MapSeesaw, byte_E7D6-MapSeesaw, byte_E7FA-MapSeesaw 2 | 3 | byte_E7D6: dc.b 7 4 | dc.b $D4, 6, 0, 0, $D3 5 | dc.b $DC, 6, 0, 6, $E3 6 | dc.b $E4, 4, 0, $C, $F3 7 | dc.b $EC, $D, 0, $E, $F3 8 | dc.b $FC, 8, 0, $16, $FB 9 | dc.b $F4, 6, 0, 6, $13 10 | dc.b $FC, 5, 0, $19, $23 11 | 12 | byte_E7FA: dc.b 4 13 | dc.b $E6, $A, 0, $1D, $D0 14 | dc.b $E6, $A, 0, $23, $E8 15 | dc.b $E6, $A, 8, $23, 0 16 | dc.b $E6, $A, 8, $1D, $18 17 | -------------------------------------------------------------------------------- /levels/SLZ/StaircasePtfm/Sprite.map: -------------------------------------------------------------------------------- 1 | MapStaircasePtfm:dc.w byte_E4D6-MapStaircasePtfm 2 | 3 | byte_E4D6: dc.b 1 4 | dc.b $F0, $F, 0, $21, $F0 5 | -------------------------------------------------------------------------------- /levels/SYZ/Bumper/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniBumper: dc.w byte_C6B6-AniBumper, byte_C6BA-AniBumper 2 | 3 | byte_C6B6: dc.b $F, 0, $FF 4 | even 5 | 6 | byte_C6BA: dc.b 3, 1, 2, 1, 2, $FD, 0 7 | -------------------------------------------------------------------------------- /levels/SYZ/Bumper/Sprite.map: -------------------------------------------------------------------------------- 1 | MapBumper: dc.w byte_C6C8-MapBumper, byte_C6D3-MapBumper, byte_C6DE-MapBumper 2 | 3 | byte_C6C8: dc.b 2 4 | dc.b $F0, 7, 0, 0, $F0 5 | dc.b $F0, 7, 8, 0, 0 6 | 7 | byte_C6D3: dc.b 2 8 | dc.b $F4, 6, 0, 8, $F4 9 | dc.b $F4, 2, 8, 8, 4 10 | 11 | byte_C6DE: dc.b 2 12 | dc.b $F0, 7, 0, $E, $F0 13 | dc.b $F0, 7, 8, $E, 0 14 | -------------------------------------------------------------------------------- /levels/SYZ/SceneryLamp/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSceneryLamp: dc.w byte_C5AE-MapSceneryLamp, byte_C5B9-MapSceneryLamp, byte_C5C4-MapSceneryLamp 2 | dc.w byte_C5CF-MapSceneryLamp, byte_C5DA-MapSceneryLamp 3 | dc.w byte_C5E5-MapSceneryLamp 4 | 5 | byte_C5AE: dc.b 2 6 | dc.b $F8, $C, 0, $31, $F0 7 | dc.b 0, $C, $10, $31, $F0 8 | 9 | byte_C5B9: dc.b 2 10 | dc.b $F8, $C, 0, $35, $F0 11 | dc.b 0, $C, $10, $35, $F0 12 | 13 | byte_C5C4: dc.b 2 14 | dc.b $F8, $C, 0, $39, $F0 15 | dc.b 0, $C, $10, $39, $F0 16 | 17 | byte_C5CF: dc.b 2 18 | dc.b $F8, $C, 0, $3D, $F0 19 | dc.b 0, $C, $10, $3D, $F0 20 | 21 | byte_C5DA: dc.b 2 22 | dc.b $F8, $C, 0, $41, $F0 23 | dc.b 0, $C, $10, $41, $F0 24 | 25 | byte_C5E5: dc.b 2 26 | dc.b $F8, $C, 0, $45, $F0 27 | dc.b 0, $C, $10, $45, $F0 28 | -------------------------------------------------------------------------------- /levels/shared/Animals/1.map: -------------------------------------------------------------------------------- 1 | MapAnimals1: dc.w byte_754E-MapAnimals1, byte_7554-MapAnimals1, byte_7548-MapAnimals1 2 | 3 | byte_7548: dc.b 1 4 | dc.b $F4, 6, 0, 0, $F8 5 | 6 | byte_754E: dc.b 1 7 | dc.b $F4, 6, 0, 6, $F8 8 | 9 | byte_7554: dc.b 1 10 | dc.b $F4, 6, 0, $C, $F8 11 | -------------------------------------------------------------------------------- /levels/shared/Animals/2.map: -------------------------------------------------------------------------------- 1 | MapAnimals2: dc.w byte_7566-MapAnimals2, byte_756C-MapAnimals2, byte_7560-MapAnimals2 2 | 3 | byte_7560: dc.b 1 4 | dc.b $F4, 6, 0, 0, $F8 5 | 6 | byte_7566: dc.b 1 7 | dc.b $FC, 5, 0, 6, $F8 8 | 9 | byte_756C: dc.b 1 10 | dc.b $FC, 5, 0, $A, $F8 11 | -------------------------------------------------------------------------------- /levels/shared/Animals/3.map: -------------------------------------------------------------------------------- 1 | MapAnimals3: dc.w byte_757E-MapAnimals3, byte_7584-MapAnimals3, byte_7578-MapAnimals3 2 | 3 | byte_7578: dc.b 1 4 | dc.b $F4, 6, 0, 0, $F8 5 | 6 | byte_757E: dc.b 1 7 | dc.b $FC, 9, 0, 6, $F4 8 | 9 | byte_7584: dc.b 1 10 | dc.b $FC, 9, 0, $C, $F4 11 | -------------------------------------------------------------------------------- /levels/shared/Capsule/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniCapsule: dc.w byte_B80E-AniCapsule, byte_B80E-AniCapsule 2 | 3 | byte_B80E: dc.b 2, 1, 3, $FF 4 | -------------------------------------------------------------------------------- /levels/shared/Capsule/Sprite.map: -------------------------------------------------------------------------------- 1 | MapCapsule: dc.w byte_B820-MapCapsule, byte_B844-MapCapsule, byte_B84A-MapCapsule 2 | dc.w byte_B869-MapCapsule, byte_B86F-MapCapsule, byte_B87A-MapCapsule 3 | dc.w byte_B880-MapCapsule 4 | 5 | byte_B820: dc.b 7 6 | dc.b $E0, $C, $20, 0, $F0 7 | dc.b $E8, $D, $20, 4, $E0 8 | dc.b $E8, $D, $20, $C, 0 9 | dc.b $F8, $E, $20, $14, $E0 10 | dc.b $F8, $E, $20, $20, 0 11 | dc.b $10, $D, $20, $2C, $E0 12 | dc.b $10, $D, $20, $34, 0 13 | 14 | byte_B844: dc.b 1 15 | dc.b $F8, 9, 0, $3C, $F4 16 | 17 | byte_B84A: dc.b 6 18 | dc.b 0, 8, $20, $42, $E0 19 | dc.b 8, $C, $20, $45, $E0 20 | dc.b 0, 4, $20, $49, $10 21 | dc.b 8, $C, $20, $4B, 0 22 | dc.b $10, $D, $20, $2C, $E0 23 | dc.b $10, $D, $20, $34, 0 24 | 25 | byte_B869: dc.b 1 26 | dc.b $F8, 9, 0, $4F, $F4 27 | 28 | byte_B86F: dc.b 2 29 | dc.b $E8, $E, $20, $55, $F0 30 | dc.b 0, $E, $20, $61, $F0 31 | 32 | byte_B87A: dc.b 1 33 | dc.b $F0, 7, $20, $6D, $F8 34 | 35 | byte_B880: dc.b 0 36 | -------------------------------------------------------------------------------- /levels/shared/Explosion/Bomb.map: -------------------------------------------------------------------------------- 1 | dc.w byte_72F3-MapBombExplode 2 | 3 | byte_7312: dc.b 1 4 | dc.b $F0, $F, 0, $40, $F0 5 | 6 | byte_7318: dc.b 1 7 | dc.b $F0, $F, 0, $50, $F0 8 | -------------------------------------------------------------------------------- /levels/shared/Explosion/Sprite.map: -------------------------------------------------------------------------------- 1 | MapExplode: dc.w byte_72CC-MapExplode, byte_72D2-MapExplode, byte_72D8-MapExplode, byte_72DE-MapExplode, byte_72F3-MapExplode 2 | 3 | byte_72CC: dc.b 1 4 | dc.b $F8, 9, 0, 0, $F4 5 | 6 | byte_72D2: dc.b 1 7 | dc.b $F0, $F, 0, 6, $F0 8 | 9 | byte_72D8: dc.b 1 10 | dc.b $F0, $F, 0, $16, $F0 11 | 12 | byte_72DE: dc.b 4 13 | dc.b $EC, $A, 0, $26, $EC 14 | dc.b $EC, 5, 0, $2F, 4 15 | dc.b 4, 5, $18, $2F, $EC 16 | dc.b $FC, $A, $18, $26, $FC 17 | 18 | byte_72F3: dc.b 4 19 | dc.b $EC, $A, 0, $33, $EC 20 | dc.b $EC, 5, 0, $3C, 4 21 | dc.b 4, 5, $18, $3C, $EC 22 | dc.b $FC, $A, $18, $33, $FC 23 | 24 | MapBombExplode: dc.w byte_72CC-MapBombExplode, byte_7312-MapBombExplode, byte_7318-MapBombExplode, byte_72DE-MapBombExplode 25 | -------------------------------------------------------------------------------- /levels/shared/GameOver/Sprite.map: -------------------------------------------------------------------------------- 1 | MapGameOver: dc.w byte_AA24-MapGameOver, byte_AA2F-MapGameOver 2 | 3 | byte_AA24: dc.b 2 4 | dc.b $F8, $D, 0, 0, $B8 5 | dc.b $F8, $D, 0, 8, $D8 6 | 7 | byte_AA2F: dc.b 2 8 | dc.b $F8, $D, 0, $14, 8 9 | dc.b $F8, $D, 0, $C, $28 10 | -------------------------------------------------------------------------------- /levels/shared/HUD/Sprite.map: -------------------------------------------------------------------------------- 1 | MapHUD: dc.w byte_11620-MapHUD 2 | 3 | byte_11620: dc.b 9 4 | dc.b $80, $D, $80, 0, 0 5 | dc.b $80, $D, $80, $18, $20 6 | dc.b $80, $D, $80, $20, $40 7 | dc.b $90, $D, $80, $10, 0 8 | dc.b $90, $D, $80, $28, $28 9 | dc.b $A0, $D, $80, 8, 0 10 | dc.b $A0, 9, $80, $30, $28 11 | dc.b $40, 5, $81, $A, 0 12 | dc.b $40, $D, $81, $E, $10 13 | -------------------------------------------------------------------------------- /levels/shared/LevelResults/Sprite.map: -------------------------------------------------------------------------------- 1 | MapLevelResults:dc.w byte_AA4C-MapLevelResults, byte_AA75-MapLevelResults, byte_AA94-MapLevelResults 2 | dc.w byte_AAB3-MapLevelResults, byte_AAD7-MapLevelResults 3 | dc.w byte_A9DD-MapLevelResults, byte_A9BC-MapLevelResults 4 | dc.w byte_A9C7-MapLevelResults, byte_A9D2-MapLevelResults 5 | 6 | byte_AA4C: dc.b 8 7 | dc.b $F8, 5, 0, $3E, $B8 8 | dc.b $F8, 5, 0, $32, $C8 9 | dc.b $F8, 5, 0, $2E, $D8 10 | dc.b $F8, 1, 0, $20, $E8 11 | dc.b $F8, 5, 0, 8, $F0 12 | dc.b $F8, 5, 0, $1C, $10 13 | dc.b $F8, 5, 0, 0, $20 14 | dc.b $F8, 5, 0, $3E, $30 15 | 16 | byte_AA75: dc.b 6 17 | dc.b $F8, 5, 0, $36, $D0 18 | dc.b $F8, 5, 0, 0, $E0 19 | dc.b $F8, 5, 0, $3E, $F0 20 | dc.b $F8, 5, 0, $3E, 0 21 | dc.b $F8, 5, 0, $10, $10 22 | dc.b $F8, 5, 0, $C, $20 23 | 24 | byte_AA94: dc.b 6 25 | 26 | byte_AA95: dc.b $F8, $D, 1, $4A, $B0 27 | dc.b $F8, 1, 1, $62, $D0 28 | dc.b $F8, 9, 1, $64, $18 29 | dc.b $F8, $D, 1, $6A, $30 30 | dc.b $F7, 4, 0, $6E, $CD 31 | dc.b $FF, 4, $18, $6E, $CD 32 | 33 | byte_AAB3: dc.b 7 34 | dc.b $F8, $D, 1, $5A, $B0 35 | dc.b $F8, $D, 0, $66, $D9 36 | dc.b $F8, 1, 1, $4A, $F9 37 | dc.b $F7, 4, 0, $6E, $F6 38 | dc.b $FF, 4, $18, $6E, $F6 39 | dc.b $F8, $D, $FF, $F0, $28 40 | dc.b $F8, 1, 1, $70, $48 41 | 42 | byte_AAD7: dc.b 7 43 | dc.b $F8, $D, 1, $52, $B0 44 | dc.b $F8, $D, 0, $66, $D9 45 | dc.b $F8, 1, 1, $4A, $F9 46 | dc.b $F7, 4, 0, $6E, $F6 47 | dc.b $FF, 4, $18, $6E, $F6 48 | dc.b $F8, $D, $FF, $F8, $28 49 | dc.b $F8, 1, 1, $70, $48 50 | -------------------------------------------------------------------------------- /levels/shared/Monitors/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniMonitor: dc.w byte_8436-AniMonitor, byte_843C-AniMonitor, byte_8448-AniMonitor 2 | dc.w byte_8454-AniMonitor, byte_8460-AniMonitor, byte_846C-AniMonitor 3 | dc.w byte_8478-AniMonitor, byte_8484-AniMonitor, byte_8490-AniMonitor 4 | dc.w byte_849C-AniMonitor 5 | 6 | byte_8436: dc.b 1, 0, 1, 2, $FF 7 | even 8 | 9 | byte_843C: dc.b 1, 0, 3, 3, 1, 3, 3, 2, 3, 3, $FF 10 | even 11 | 12 | byte_8448: dc.b 1, 0, 4, 4, 1, 4, 4, 2, 4, 4, $FF 13 | even 14 | 15 | byte_8454: dc.b 1, 0, 5, 5, 1, 5, 5, 2, 5, 5, $FF 16 | even 17 | 18 | byte_8460: dc.b 1, 0, 6, 6, 1, 6, 6, 2, 6, 6, $FF 19 | even 20 | 21 | byte_846C: dc.b 1, 0, 7, 7, 1, 7, 7, 2, 7, 7, $FF 22 | even 23 | 24 | byte_8478: dc.b 1, 0, 8, 8, 1, 8, 8, 2, 8, 8, $FF 25 | even 26 | 27 | byte_8484: dc.b 1, 0, 9, 9, 1, 9, 9, 2, 9, 9, $FF 28 | even 29 | 30 | byte_8490: dc.b 1, 0, $A, $A, 1, $A, $A, 2, $A, $A, $FF 31 | even 32 | 33 | byte_849C: dc.b 2, 0, 1, 2, $B, $FE, 1 34 | even 35 | -------------------------------------------------------------------------------- /levels/shared/Monitors/Sprite.map: -------------------------------------------------------------------------------- 1 | MapMonitor: dc.w byte_84BC-MapMonitor, byte_84C2-MapMonitor, byte_84CD-MapMonitor 2 | dc.w byte_84D8-MapMonitor, byte_84E3-MapMonitor, byte_84EE-MapMonitor 3 | dc.w byte_84F9-MapMonitor, byte_8504-MapMonitor, byte_850F-MapMonitor 4 | dc.w byte_851A-MapMonitor, byte_8525-MapMonitor, byte_8530-MapMonitor 5 | 6 | byte_84BC: dc.b 1 7 | dc.b $EF, $F, 0, 0, $F0 8 | 9 | byte_84C2: dc.b 2 10 | dc.b $F5, 5, 0, $10, $F8 11 | dc.b $EF, $F, 0, 0, $F0 12 | 13 | byte_84CD: dc.b 2 14 | dc.b $F5, 5, 0, $14, $F8 15 | dc.b $EF, $F, 0, 0, $F0 16 | 17 | byte_84D8: dc.b 2 18 | dc.b $F5, 5, 0, $18, $F8 19 | dc.b $EF, $F, 0, 0, $F0 20 | 21 | byte_84E3: dc.b 2 22 | dc.b $F5, 5, 0, $1C, $F8 23 | dc.b $EF, $F, 0, 0, $F0 24 | 25 | byte_84EE: dc.b 2 26 | dc.b $F5, 5, 0, $24, $F8 27 | dc.b $EF, $F, 0, 0, $F0 28 | 29 | byte_84F9: dc.b 2 30 | dc.b $F5, 5, 0, $28, $F8 31 | dc.b $EF, $F, 0, 0, $F0 32 | 33 | byte_8504: dc.b 2 34 | dc.b $F5, 5, 0, $2C, $F8 35 | dc.b $EF, $F, 0, 0, $F0 36 | 37 | byte_850F: dc.b 2 38 | dc.b $F5, 5, 0, $30, $F8 39 | dc.b $EF, $F, 0, 0, $F0 40 | 41 | byte_851A: dc.b 2 42 | dc.b $F5, 5, 0, $34, $F8 43 | dc.b $EF, $F, 0, 0, $F0 44 | 45 | byte_8525: dc.b 2 46 | dc.b $F5, 5, 0, $20, $F8 47 | dc.b $EF, $F, 0, 0, $F0 48 | 49 | byte_8530: dc.b 1 50 | dc.b $FF, $D, 0, $38, $F0 51 | -------------------------------------------------------------------------------- /levels/shared/MovingBlocks/Sprite.map: -------------------------------------------------------------------------------- 1 | MapMovingBlocks:dc.w byte_DC28-MapMovingBlocks, byte_DC2E-MapMovingBlocks, byte_DC43-MapMovingBlocks 2 | dc.w byte_DC4E-MapMovingBlocks, byte_DC63-MapMovingBlocks 3 | dc.w byte_DC73-MapMovingBlocks 4 | 5 | byte_DC28: dc.b 1 6 | dc.b $F0, $F, 0, $61, $F0 7 | 8 | byte_DC2E: dc.b 4 9 | dc.b $E0, $F, 0, $61, $E0 10 | dc.b $E0, $F, 0, $61, 0 11 | dc.b 0, $F, 0, $61, $E0 12 | dc.b 0, $F, 0, $61, 0 13 | 14 | byte_DC43: dc.b 2 15 | dc.b $E0, $F, 0, $61, $F0 16 | dc.b 0, $F, 0, $61, $F0 17 | 18 | byte_DC4E: dc.b 4 19 | dc.b $E6, $F, 0, $81, $E0 20 | dc.b $E6, $F, 0, $81, 0 21 | dc.b 0, $F, 0, $81, $E0 22 | dc.b 0, $F, 0, $81, 0 23 | 24 | byte_DC63: dc.b 3 25 | dc.b $D9, $F, 0, $81, $F0 26 | dc.b $F3, $F, 0, $81, $F0 27 | dc.b $D, $F, 0, $81, $F0 28 | 29 | byte_DC73: dc.b 1 30 | dc.b $F0, $F, 0, $21, $F0 31 | -------------------------------------------------------------------------------- /levels/shared/Platform/1.map: -------------------------------------------------------------------------------- 1 | MapPlatform1: dc.w byte_5C18-MapPlatform1, byte_5C2D-MapPlatform1 2 | 3 | byte_5C18: dc.b 4 4 | dc.b $F4, $B, 0, $3B, $E0 5 | dc.b $F4, 7, 0, $3F, $F8 6 | dc.b $F4, 7, 0, $3F, 8 7 | dc.b $F4, 3, 0, $47, $18 8 | 9 | byte_5C2D: dc.b $A 10 | dc.b $F4, $F, 0, $C5, $E0 11 | dc.b 4, $F, 0, $D5, $E0 12 | dc.b $24, $F, 0, $D5, $E0 13 | dc.b $44, $F, 0, $D5, $E0 14 | dc.b $64, $F, 0, $D5, $E0 15 | dc.b $F4, $F, 8, $C5, 0 16 | dc.b 4, $F, 8, $D5, 0 17 | dc.b $24, $F, 8, $D5, 0 18 | dc.b $44, $F, 8, $D5, 0 19 | dc.b $64, $F, 8, $D5, 0 20 | -------------------------------------------------------------------------------- /levels/shared/Platform/2.map: -------------------------------------------------------------------------------- 1 | MapPlatform2: dc.w byte_5C62-MapPlatform2 2 | 3 | byte_5C62: dc.b 3 4 | dc.b $F6, $B, 0, $49, $E0 5 | dc.b $F6, 7, 0, $51, $F8 6 | dc.b $F6, $B, 0, $55, 8 7 | -------------------------------------------------------------------------------- /levels/shared/Platform/3.map: -------------------------------------------------------------------------------- 1 | MapPlatform3: dc.w byte_5C74-MapPlatform3 2 | 3 | byte_5C74: dc.b 2 4 | dc.b $F8, $F, 0, $21, $E0 5 | dc.b $F8, $F, 0, $21, 0 6 | -------------------------------------------------------------------------------- /levels/shared/Points/Sprite.map: -------------------------------------------------------------------------------- 1 | MapPoints: dc.w byte_7592-MapPoints, byte_7598-MapPoints, byte_759E-MapPoints, byte_75A4-MapPoints 2 | 3 | byte_7592: dc.b 1 4 | dc.b $FC, 4, 0, 0, $F8 5 | 6 | byte_7598: dc.b 1 7 | dc.b $FC, 4, 0, 2, $F8 8 | 9 | byte_759E: dc.b 1 10 | dc.b $FC, 4, 0, 4, $F8 11 | 12 | byte_75A4: dc.b 1 13 | dc.b $FC, 8, 0, 6, $F4 14 | -------------------------------------------------------------------------------- /levels/shared/Rings/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniRing: dc.w byte_7F5E-AniRing 2 | 3 | byte_7F5E: dc.b 5, 4, 5, 6, 7, $FC 4 | -------------------------------------------------------------------------------- /levels/shared/Rings/Sprite.map: -------------------------------------------------------------------------------- 1 | MapRing: dc.w byte_7F74-MapRing, byte_7F7A-MapRing, byte_7F80-MapRing 2 | dc.w byte_7F86-MapRing, byte_7F8C-MapRing, byte_7F92-MapRing 3 | dc.w byte_7F98-MapRing, byte_7F9E-MapRing 4 | 5 | byte_7F74: dc.b 1 6 | dc.b $F8, 5, 0, 0, $F8 7 | 8 | byte_7F7A: dc.b 1 9 | dc.b $F8, 5, 0, 4, $F8 10 | 11 | byte_7F80: dc.b 1 12 | dc.b $F8, 1, 0, 8, $FC 13 | 14 | byte_7F86: dc.b 1 15 | dc.b $F8, 5, 8, 4, $F8 16 | 17 | byte_7F8C: dc.b 1 18 | dc.b $F8, 5, 0, $A, $F8 19 | 20 | byte_7F92: dc.b 1 21 | dc.b $F8, 5, $18, $A, $F8 22 | 23 | byte_7F98: dc.b 1 24 | dc.b $F8, 5, 8, $A, $F8 25 | 26 | byte_7F9E: dc.b 1 27 | dc.b $F8, 5, $10, $A, $F8 28 | -------------------------------------------------------------------------------- /levels/shared/Roller/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniRoller: dc.w byte_C0BA-AniRoller, byte_C0BE-AniRoller, byte_C0C4-AniRoller 2 | 3 | byte_C0BA: dc.b $F, 0, $FF 4 | even 5 | 6 | byte_C0BE: dc.b $F, 1, 2, $FD, 2 7 | even 8 | 9 | byte_C0C4: dc.b 3, 2, 3, 4, $FF 10 | -------------------------------------------------------------------------------- /levels/shared/Roller/Sprite.map: -------------------------------------------------------------------------------- 1 | MapRoller: dc.w byte_C0D4-MapRoller, byte_C0DF-MapRoller, byte_C0EA-MapRoller 2 | dc.w byte_C0F0-MapRoller, byte_C0F6-MapRoller 3 | 4 | byte_C0D4: dc.b 2 5 | dc.b $DE, $E, 0, 0, $F0 6 | dc.b $F6, $E, 0, $C, $F0 7 | 8 | byte_C0DF: dc.b 2 9 | dc.b $E6, $E, 0, 0, $F0 10 | dc.b $FE, $D, 0, $18, $F0 11 | 12 | byte_C0EA: dc.b 1 13 | dc.b $F0, $F, 0, $20, $F0 14 | 15 | byte_C0F0: dc.b 1 16 | dc.b $F0, $F, 0, $30, $F0 17 | 18 | byte_C0F6: dc.b 1 19 | dc.b $F0, $F, 0, $40, $F0 20 | -------------------------------------------------------------------------------- /levels/shared/Scenery/Sprite.map: -------------------------------------------------------------------------------- 1 | MapScenery: dc.w byte_67A4-MapScenery 2 | 3 | byte_67A4: dc.b 4 4 | dc.b $F4, $A, 1, $B, $D0 5 | dc.b $F4, $A, 1, $14, $E8 6 | dc.b $F4, $A, 9, $14, 0 7 | dc.b $F4, $A, 9, $B, $18 8 | -------------------------------------------------------------------------------- /levels/shared/Shield/Shield.ani: -------------------------------------------------------------------------------- 1 | AniShield: dc.w byte_F8DC-AniShield, byte_F8E4-AniShield, byte_F8EA-AniShield 2 | dc.w byte_F904-AniShield, byte_F91E-AniShield 3 | 4 | byte_F8DC: dc.b 1, 1, 0, 2, 0, 3, 0, $FF 5 | 6 | byte_F8E4: dc.b 5, 4, 5, 6, 7, $FF 7 | 8 | byte_F8EA: dc.b 0, 4, 4, 0, 4, 4, 0, 5, 5, 0, 5, 5, 0, 6, 6, 0, 6 9 | dc.b 6, 0, 7, 7, 0, 7, 7, 0, $FF 10 | 11 | byte_F904: dc.b 0, 4, 4, 0, 4, 0, 0, 5, 5, 0, 5, 0, 0, 6, 6, 0, 6 12 | dc.b 0, 0, 7, 7, 0, 7, 0, 0, $FF 13 | 14 | byte_F91E: dc.b 0, 4, 0, 0, 4, 0, 0, 5, 0, 0, 5, 0, 0, 6, 0, 0, 6 15 | dc.b 0, 0, 7, 0, 0, 7, 0, 0, $FF 16 | -------------------------------------------------------------------------------- /levels/shared/Shield/Shield.map: -------------------------------------------------------------------------------- 1 | MapShield: dc.w byte_F953-MapShield, byte_F948-MapShield, byte_F95D-MapShield 2 | dc.w byte_F972-MapShield, byte_F987-MapShield, byte_F99C-MapShield 3 | dc.w byte_F9B1-MapShield, byte_F9C6-MapShield 4 | 5 | byte_F948: dc.b 4 6 | 7 | byte_F949: dc.b $E8, $A, 0, 0, $E8 8 | dc.b $E8, $A, 0, 9, 0 9 | 10 | byte_F953: dc.b 0, $A, $10, 0, $E8 11 | dc.b 0, $A, $10, 9, 0 12 | 13 | byte_F95D: dc.b 4 14 | dc.b $E8, $A, 8, $12, $E9 15 | dc.b $E8, $A, 0, $12, 0 16 | dc.b 0, $A, $18, $12, $E9 17 | dc.b 0, $A, $10, $12, 0 18 | 19 | byte_F972: dc.b 4 20 | dc.b $E8, $A, 8, 9, $E8 21 | dc.b $E8, $A, 8, 0, 0 22 | dc.b 0, $A, $18, 9, $E8 23 | dc.b 0, $A, $18, 0, 0 24 | 25 | byte_F987: dc.b 4 26 | dc.b $E8, $A, 0, 0, $E8 27 | dc.b $E8, $A, 0, 9, 0 28 | dc.b 0, $A, $18, 9, $E8 29 | dc.b 0, $A, $18, 0, 0 30 | 31 | byte_F99C: dc.b 4 32 | dc.b $E8, $A, 8, 9, $E8 33 | dc.b $E8, $A, 8, 0, 0 34 | dc.b 0, $A, $10, 0, $E8 35 | dc.b 0, $A, $10, 9, 0 36 | 37 | byte_F9B1: dc.b 4 38 | dc.b $E8, $A, 0, $12, $E8 39 | dc.b $E8, $A, 0, $1B, 0 40 | dc.b 0, $A, $18, $1B, $E8 41 | dc.b 0, $A, $18, $12, 0 42 | 43 | byte_F9C6: dc.b 4 44 | dc.b $E8, $A, 8, $1B, $E8 45 | dc.b $E8, $A, 8, $12, 0 46 | dc.b 0, $A, $10, $12, $E8 47 | dc.b 0, $A, $10, $1B, 0 48 | -------------------------------------------------------------------------------- /levels/shared/Signpost/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniSignpost: dc.w byte_C8B4-AniSignpost, byte_C8B8-AniSignpost, byte_C8BE-AniSignpost, byte_C8C4-AniSignpost 2 | 3 | byte_C8B4: dc.b $F, 0, $FF 4 | even 5 | 6 | byte_C8B8: dc.b 1, 0, 1, 2, 3, $FF 7 | 8 | byte_C8BE: dc.b 1, 4, 1, 2, 3, $FF 9 | 10 | byte_C8C4: dc.b $F, 4, $FF 11 | even 12 | -------------------------------------------------------------------------------- /levels/shared/Signpost/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSignpost: dc.w byte_C8D2-MapSignpost, byte_C8E2-MapSignpost, byte_C8ED-MapSignpost 2 | dc.w byte_C8F8-MapSignpost, byte_C903-MapSignpost 3 | 4 | byte_C8D2: dc.b 3 5 | dc.b $F0, $B, 0, 0, $E8 6 | dc.b $F0, $B, 8, 0, 0 7 | dc.b $10, 1, 0, $38, $FC 8 | 9 | byte_C8E2: dc.b 2 10 | dc.b $F0, $F, 0, $C, $F0 11 | dc.b $10, 1, 0, $38, $FC 12 | 13 | byte_C8ED: dc.b 2 14 | dc.b $F0, 3, 0, $1C, $FC 15 | dc.b $10, 1, 8, $38, $FC 16 | 17 | byte_C8F8: dc.b 2 18 | dc.b $F0, $F, 8, $C, $F0 19 | dc.b $10, 1, 8, $38, $FC 20 | 21 | byte_C903: dc.b 3 22 | dc.b $F0, $B, 0, $20, $E8 23 | dc.b $F0, $B, 0, $2C, 0 24 | dc.b $10, 1, 0, $38, $FC 25 | -------------------------------------------------------------------------------- /levels/shared/Sonic/Srite.ani: -------------------------------------------------------------------------------- 1 | AniSonic: dc.w byte_F64C-AniSonic, byte_F654-AniSonic, byte_F65C-AniSonic 2 | dc.w byte_F664-AniSonic, byte_F66C-AniSonic, byte_F674-AniSonic 3 | dc.w byte_F68A-AniSonic, byte_F68E-AniSonic, byte_F692-AniSonic 4 | dc.w byte_F696-AniSonic, byte_F69A-AniSonic, byte_F69E-AniSonic 5 | dc.w byte_F6A2-AniSonic, byte_F6A6-AniSonic, byte_F6AA-AniSonic 6 | dc.w byte_F6AE-AniSonic, byte_F6B6-AniSonic, byte_F6BA-AniSonic 7 | dc.w byte_F6BE-AniSonic, byte_F6C4-AniSonic, byte_F6CA-AniSonic 8 | dc.w byte_F6CE-AniSonic, byte_F6D2-AniSonic, byte_F6D6-AniSonic 9 | dc.w byte_F6DA-AniSonic, byte_F6DE-AniSonic, byte_F6E8-AniSonic 10 | 11 | byte_F64C: dc.b $FF, 8, 9, $A, $B, 6, 7, $FF 12 | 13 | byte_F654: dc.b $FF, $1E, $1F, $20, $21, $FF, $FF, $FF 14 | 15 | byte_F65C: dc.b $FE, $2E, $2F, $30, $31, $32, $FF, $FF 16 | 17 | byte_F664: dc.b $FE, $2E, $2F, $32, $30, $31, $32, $FF 18 | 19 | byte_F66C: dc.b $FD, $45, $46, $47, $48, $FF, $FF, $FF 20 | 21 | byte_F674: dc.b $17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 22 | dc.b 2, 3, 4, $FE, 2 23 | even 24 | 25 | byte_F68A: dc.b $1F, $3A, $3B, $FF 26 | 27 | byte_F68E: dc.b $3F, 5, $FF 28 | even 29 | 30 | byte_F692: dc.b $3F, $39, $FF 31 | even 32 | 33 | byte_F696: dc.b $3F, $33, $FF 34 | even 35 | 36 | byte_F69A: dc.b $3F, $34, $FF 37 | even 38 | 39 | byte_F69E: dc.b $3F, $35, $FF 40 | even 41 | 42 | byte_F6A2: dc.b $3F, $36, $FF 43 | even 44 | 45 | byte_F6A6: dc.b 7, $37, $38, $FF 46 | 47 | byte_F6AA: dc.b 7, $3C, $3F, $FF 48 | 49 | byte_F6AE: dc.b 7, $3C, $3D, $53, $3E, $54, $FF 50 | even 51 | 52 | byte_F6B6: dc.b $2F, $40, $FD 53 | even 54 | 55 | byte_F6BA: dc.b 4, $41, $42, $FF 56 | 57 | byte_F6BE: dc.b $F, $43, $43, $43, $FE, 1 58 | 59 | byte_F6C4: dc.b $F, $43, $44, $FE, 1 60 | even 61 | 62 | byte_F6CA: dc.b $3F, $49, $FF 63 | even 64 | 65 | byte_F6CE: dc.b $3F, $4A, $FF 66 | even 67 | 68 | byte_F6D2: dc.b 3, $4B, $FF 69 | even 70 | 71 | byte_F6D6: dc.b 3, $4C, $FF 72 | even 73 | 74 | byte_F6DA: dc.b 3, $4D, $FF 75 | even 76 | 77 | byte_F6DE: dc.b 3, $4E, $4F, $50, $51, $52, 0, $FE, 1, 0 78 | 79 | byte_F6E8: dc.b 3, $55, $FF 80 | -------------------------------------------------------------------------------- /levels/shared/SpecialRing/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniEntryRingBeta:dc.w byte_F9DE-AniEntryRingBeta 2 | 3 | byte_F9DE: dc.b 5, 0, 1, 0, 1, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7 4 | dc.b 6, 7, $FC 5 | -------------------------------------------------------------------------------- /levels/shared/SpecialRing/Sprite.map: -------------------------------------------------------------------------------- 1 | MapEntryRingBeta:dc.w byte_FA02-MapEntryRingBeta, byte_FA12-MapEntryRingBeta, byte_FA22-MapEntryRingBeta 2 | dc.w byte_FA3C-MapEntryRingBeta, byte_FA6A-MapEntryRingBeta 3 | dc.w byte_FAC5-MapEntryRingBeta, byte_FB1B-MapEntryRingBeta 4 | dc.w byte_FB1C+$29-MapEntryRingBeta 5 | 6 | byte_FA02: dc.b 3 7 | dc.b $F8, 0, 0, 0, 8 8 | dc.b 0, 4, 0, 1, 0 9 | dc.b 8, 0, $10, 0, 8 10 | 11 | byte_FA12: dc.b 3 12 | dc.b $F0, $D, 0, 3, $F0 13 | dc.b 0, $C, 0, $B, $F0 14 | dc.b 8, $D, $10, 3, $F0 15 | 16 | byte_FA22: dc.b 5 17 | dc.b $E4, $E, 0, $F, $F4 18 | dc.b $EC, 2, 0, $1B, $EC 19 | dc.b $FC, $C, 0, $1E, $F4 20 | dc.b 4, $E, $10, $F, $F4 21 | dc.b 4, 1, $10, $1B, $EC 22 | 23 | byte_FA3C: dc.b 9 24 | dc.b $F0, 8, 0, $22, $F8 25 | dc.b $F8, $E, 0, $25, $F0 26 | dc.b $10, 8, 0, $31, $F0 27 | dc.b 0, 5, 0, $34, $10 28 | dc.b $F8, 0, 8, $25, $10 29 | dc.b $F0, 0, $18, $36, $18 30 | dc.b $F8, 0, $18, $25, $20 31 | dc.b 0, 0, 8, $25, $28 32 | dc.b $F8, 0, 0, $25, $30 33 | 34 | byte_FA6A: dc.b $12 35 | dc.b 0, 0, $18, $25, $F0 36 | dc.b $F8, 4, 0, $38, $F8 37 | dc.b $F0, 0, 0, $26, 8 38 | dc.b 0, 0, 0, $25, 0 39 | dc.b 8, 0, $18, $25, $F8 40 | dc.b $10, 0, $10, $26, 0 41 | dc.b 8, 0, $10, $38, 8 42 | dc.b $F8, 0, 0, $29, $10 43 | dc.b 0, 0, 0, $26, $10 44 | dc.b 0, 0, 0, $2D, $18 45 | dc.b 8, 0, 8, $26, $18 46 | dc.b 8, 0, 0, $29, $20 47 | dc.b $F8, 0, 0, $26, $20 48 | dc.b $F8, 0, 0, $2D, $28 49 | dc.b 0, 0, 0, $3A, $28 50 | dc.b $F8, 0, $18, $26, $30 51 | dc.b 0, 0, $10, $25, $38 52 | dc.b $F8, 0, $10, $25, $40 53 | 54 | byte_FAC5: dc.b $11 55 | dc.b $F8, 0, 8, $25, 0 56 | dc.b $F0, 0, 0, $38, $10 57 | dc.b $10, 0, 8, $25, 0 58 | dc.b 0, 0, $18, $25, $10 59 | dc.b 8, 0, $10, $25, $18 60 | dc.b $F8, 0, $18, $25, $20 61 | dc.b 0, 0, $10, $26, $28 62 | dc.b $F8, 0, $10, $25, $30 63 | dc.b 0, 0, 0, $25, $30 64 | dc.b 8, 0, 8, $25, $30 65 | dc.b 0, 0, 8, $26, $38 66 | dc.b 8, 0, 0, $29, $38 67 | dc.b $F8, 0, 8, $26, $40 68 | dc.b 0, 0, 0, $2D, $40 69 | dc.b $F8, 0, 8, $25, $48 70 | dc.b 0, 0, 0, $25, $48 71 | dc.b 0, 0, $10, $25, $50 72 | 73 | byte_FB1B: dc.b 9 74 | 75 | byte_FB1C: dc.b $FC, 0, 8, $26, $30 76 | dc.b 4, 0, 8, $25, $28 77 | dc.b 4, 0, $10, $27, $38 78 | dc.b 4, 0, 8, $26, $40 79 | dc.b $FC, 0, $10, $25, $40 80 | dc.b $FC, 0, $10, $26, $48 81 | dc.b $C, 0, 8, $27, $48 82 | dc.b 4, 0, $18, $26, $50 83 | dc.b 4, 0, 8, $27, $58 84 | -------------------------------------------------------------------------------- /levels/shared/Spikes/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSpikes: dc.w byte_ACB0-MapSpikes, byte_ACC0-MapSpikes, byte_ACD0-MapSpikes 2 | dc.w byte_ACD6-MapSpikes, byte_ACE6-MapSpikes, byte_AD05-MapSpikes 3 | 4 | byte_ACB0: dc.b 3 5 | dc.b $F0, 3, 0, 4, $EC 6 | dc.b $F0, 3, 0, 4, $FC 7 | dc.b $F0, 3, 0, 4, $C 8 | 9 | byte_ACC0: dc.b 3 10 | dc.b $EC, $C, 0, 0, $F0 11 | dc.b $FC, $C, 0, 0, $F0 12 | dc.b $C, $C, 0, 0, $F0 13 | 14 | byte_ACD0: dc.b 1 15 | dc.b $F0, 3, 0, 4, $FC 16 | 17 | byte_ACD6: dc.b 3 18 | dc.b $F0, 3, 0, 4, $E4 19 | dc.b $F0, 3, 0, 4, $FC 20 | dc.b $F0, 3, 0, 4, $14 21 | 22 | byte_ACE6: dc.b 6 23 | dc.b $F0, 3, 0, 4, $C0 24 | dc.b $F0, 3, 0, 4, $D8 25 | dc.b $F0, 3, 0, 4, $F0 26 | dc.b $F0, 3, 0, 4, 8 27 | dc.b $F0, 3, 0, 4, $20 28 | dc.b $F0, 3, 0, 4, $38 29 | 30 | byte_AD05: dc.b 1 31 | dc.b $FC, $C, 0, 0, $F0 32 | -------------------------------------------------------------------------------- /levels/shared/Spring/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniSpring: dc.w byte_BCB2-AniSpring, byte_BCBE-AniSpring 2 | 3 | byte_BCB2: dc.b 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 0, $FC 4 | 5 | byte_BCBE: dc.b 0, 4, 3, 3, 5, 5, 5, 5, 5, 5, 3, $FC 6 | -------------------------------------------------------------------------------- /levels/shared/Spring/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSpring: dc.w byte_BCD6-MapSpring, byte_BCE1-MapSpring, byte_BCE7-MapSpring 2 | dc.w byte_BCF7-MapSpring, byte_BCFD-MapSpring, byte_BD03-MapSpring 3 | 4 | byte_BCD6: dc.b 2 5 | dc.b $F8, $C, 0, 0, $F0 6 | dc.b 0, $C, 0, 4, $F0 7 | 8 | byte_BCE1: dc.b 1 9 | dc.b 0, $C, 0, 0, $F0 10 | 11 | byte_BCE7: dc.b 3 12 | dc.b $E8, $C, 0, 0, $F0 13 | dc.b $F0, 5, 0, 8, $F8 14 | dc.b 0, $C, 0, $C, $F0 15 | 16 | byte_BCF7: dc.b 1 17 | dc.b $F0, 7, 0, 0, $F8 18 | 19 | byte_BCFD: dc.b 1 20 | dc.b $F0, 3, 0, 4, $F8 21 | 22 | byte_BD03: dc.b 4 23 | dc.b $F0, 3, 0, 4, $10 24 | dc.b $F8, 9, 0, 8, $F8 25 | dc.b $F0, 0, 0, 0, $F8 26 | dc.b 8, 0, 0, 3, $F8 27 | -------------------------------------------------------------------------------- /levels/shared/SwingPtfm/Main.map: -------------------------------------------------------------------------------- 1 | MapSwingPtfm: dc.w byte_5726-MapSwingPtfm, byte_5731-MapSwingPtfm, byte_5737-MapSwingPtfm 2 | 3 | byte_5726: dc.b 2 4 | dc.b $F8, 9, 0, 4, $E8 5 | dc.b $F8, 9, 0, 4, 0 6 | 7 | byte_5731: dc.b 1 8 | dc.b $F8, 5, 0, 0, $F8 9 | 10 | byte_5737: dc.b 1 11 | dc.b $F8, 5, 0, $A, $F8 12 | -------------------------------------------------------------------------------- /levels/shared/SwingPtfm/SYZ.map: -------------------------------------------------------------------------------- 1 | MapSwingPtfmSYZ:dc.w byte_5744-MapSwingPtfmSYZ, byte_576D-MapSwingPtfmSYZ, byte_5773-MapSwingPtfmSYZ 2 | 3 | byte_5744: dc.b 8 4 | dc.b $F0, $F, 0, 4, $E0 5 | dc.b $F0, $F, 8, 4, 0 6 | dc.b $F0, 5, 0, $14, $D0 7 | dc.b $F0, 5, 8, $14, $20 8 | dc.b $10, 4, 0, $18, $E0 9 | dc.b $10, 4, 8, $18, $10 10 | dc.b $10, 1, 0, $1A, $F8 11 | dc.b $10, 1, 8, $1A, 0 12 | 13 | byte_576D: dc.b 1 14 | dc.b $F8, 5, $40, 0, $F8 15 | 16 | byte_5773: dc.b 1 17 | dc.b $F8, 5, 0, 0, $F8 18 | -------------------------------------------------------------------------------- /levels/shared/Switch/Sprite.map: -------------------------------------------------------------------------------- 1 | MapSwitch: dc.w byte_9EDC-MapSwitch, byte_9EE7-MapSwitch, byte_9EF2-MapSwitch, byte_9EE7-MapSwitch 2 | 3 | byte_9EDC: dc.b 2 4 | dc.b $F5, 5, 0, 0, $F0 5 | dc.b $F5, 5, 8, 0, 0 6 | 7 | byte_9EE7: dc.b 2 8 | dc.b $F5, 5, 0, 4, $F0 9 | dc.b $F5, 5, 8, 4, 0 10 | 11 | byte_9EF2: dc.b 2 12 | dc.b $F5, 5, $FF, $FC, $F0 13 | dc.b $F5, 5, 7, $FC, 0 14 | dc.b $F8, 5, 0, 0, $F8 15 | -------------------------------------------------------------------------------- /levels/shared/TitleCard/Sprite.map: -------------------------------------------------------------------------------- 1 | MapTitleCard: dc.w byte_A8A4-MapTitleCard, byte_A8D2-MapTitleCard, byte_A900-MapTitleCard 2 | dc.w byte_A920-MapTitleCard, byte_A94E-MapTitleCard, byte_A97C-MapTitleCard 3 | dc.w byte_A9A6-MapTitleCard, byte_A9BC-MapTitleCard, byte_A9C7-MapTitleCard 4 | dc.w byte_A9D2-MapTitleCard, byte_A9DD-MapTitleCard 5 | 6 | byte_A8A4: dc.b 9 7 | dc.b $F8, 5, 0, $18, $B4 8 | dc.b $F8, 5, 0, $3A, $C4 9 | dc.b $F8, 5, 0, $10, $D4 10 | dc.b $F8, 5, 0, $10, $E4 11 | dc.b $F8, 5, 0, $2E, $F4 12 | dc.b $F8, 5, 0, $1C, $14 13 | dc.b $F8, 1, 0, $20, $24 14 | dc.b $F8, 5, 0, $26, $2C 15 | dc.b $F8, 5, 0, $26, $3C 16 | 17 | byte_A8D2: dc.b 9 18 | dc.b $F8, 5, 0, $26, $BC 19 | dc.b $F8, 5, 0, 0, $CC 20 | dc.b $F8, 5, 0, 4, $DC 21 | dc.b $F8, 5, 0, $4A, $EC 22 | dc.b $F8, 5, 0, $3A, $FC 23 | dc.b $F8, 1, 0, $20, $C 24 | dc.b $F8, 5, 0, $2E, $14 25 | dc.b $F8, 5, 0, $42, $24 26 | dc.b $F8, 5, 0, $1C, $34 27 | 28 | byte_A900: dc.b 6 29 | dc.b $F8, 5, 0, $2A, $CF 30 | dc.b $F8, 5, 0, 0, $E0 31 | dc.b $F8, 5, 0, $3A, $F0 32 | dc.b $F8, 5, 0, 4, 0 33 | dc.b $F8, 5, 0, $26, $10 34 | dc.b $F8, 5, 0, $10, $20 35 | dc.b 0 36 | 37 | byte_A920: dc.b 9 38 | 39 | byte_A921: dc.b $F8, 5, 0, $3E, $B4 40 | dc.b $F8, 5, 0, $42, $C4 41 | dc.b $F8, 5, 0, 0, $D4 42 | dc.b $F8, 5, 0, $3A, $E4 43 | dc.b $F8, 5, 0, $26, 4 44 | dc.b $F8, 1, 0, $20, $14 45 | dc.b $F8, 5, 0, $18, $1C 46 | dc.b $F8, 5, 0, $1C, $2C 47 | dc.b $F8, 5, 0, $42, $3C 48 | 49 | byte_A94E: dc.b 9 50 | dc.b $F8, 5, 0, $3E, $BC 51 | dc.b $F8, 5, 0, $36, $CC 52 | dc.b $F8, 5, 0, 0, $DC 53 | dc.b $F8, 5, 0, $3A, $EC 54 | dc.b $F8, 5, 0, $22, $FC 55 | dc.b $F8, 5, 0, $26, $C 56 | dc.b $F8, 1, 0, $20, $1C 57 | dc.b $F8, 5, 0, $2E, $24 58 | dc.b $F8, 5, 0, $18, $34 59 | 60 | byte_A97C: dc.b 8 61 | dc.b $F8, 5, 0, 8, $B0 62 | dc.b $F8, 5, 0, $26, $C0 63 | dc.b $F8, 5, 0, $32, $D0 64 | dc.b $F8, 5, 0, 8, $E0 65 | dc.b $F8, 5, 0, $22, $F0 66 | dc.b $F8, 5, 0, $32, $20 67 | dc.b $F8, 5, 0, $3A, $30 68 | dc.b $F8, 5, 0, $22, $40 69 | dc.b 0 70 | 71 | byte_A9A6: dc.b 4 72 | dc.b $F8, 5, 0, $4E, $E0 73 | dc.b $F8, 5, 0, $32, $F0 74 | dc.b $F8, 5, 0, $2E, 0 75 | dc.b $F8, 5, 0, $10, $10 76 | even 77 | 78 | byte_A9BC: dc.b 2 79 | dc.b 4, $C, 0, $53, $EC 80 | dc.b $F4, 2, 0, $57, $C 81 | 82 | byte_A9C7: dc.b 2 83 | dc.b 4, $C, 0, $53, $EC 84 | dc.b $F4, 6, 0, $5A, 8 85 | 86 | byte_A9D2: dc.b 2 87 | dc.b 4, $C, 0, $53, $EC 88 | dc.b $F4, 6, 0, $60, 8 89 | 90 | byte_A9DD: dc.b $D 91 | dc.b $E4, $C, 0, $70, $F4 92 | dc.b $E4, 2, 0, $74, $14 93 | dc.b $EC, 4, 0, $77, $EC 94 | dc.b $F4, 5, 0, $79, $E4 95 | dc.b $14, $C, $18, $70, $EC 96 | dc.b 4, 2, $18, $74, $E4 97 | dc.b $C, 4, $18, $77, 4 98 | dc.b $FC, 5, $18, $79, $C 99 | dc.b $EC, 8, 0, $7D, $FC 100 | dc.b $F4, $C, 0, $7C, $F4 101 | dc.b $FC, 8, 0, $7C, $F4 102 | dc.b 4, $C, 0, $7C, $EC 103 | dc.b $C, 8, 0, $7C, $EC 104 | -------------------------------------------------------------------------------- /levels/shared/Yadrin/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniYardin: dc.w byte_D40C-AniYardin, byte_D410-AniYardin 2 | 3 | byte_D40C: dc.b 7, 0, $FF 4 | even 5 | 6 | byte_D410: dc.b 7, 0, 3, 1, 4, 0, 3, 2, 5, $FF 7 | -------------------------------------------------------------------------------- /levels/shared/Yadrin/Sprite.map: -------------------------------------------------------------------------------- 1 | MapYadrin: dc.w byte_D426-MapYadrin, byte_D440-MapYadrin, byte_D45A-MapYadrin 2 | dc.w byte_D474-MapYadrin, byte_D48E-MapYadrin, byte_D4A8-MapYadrin 3 | 4 | byte_D426: dc.b 5 5 | dc.b $F4, 8, 0, 0, $F4 6 | dc.b $FC, $E, 0, 3, $EC 7 | dc.b $EC, 4, 0, $F, $FC 8 | dc.b $F4, 2, 0, $11, $C 9 | dc.b 4, 9, 0, $31, $FC 10 | 11 | byte_D440: dc.b 5 12 | dc.b $F4, 8, 0, $14, $F4 13 | dc.b $FC, $E, 0, $17, $EC 14 | dc.b $EC, 4, 0, $F, $FC 15 | dc.b $F4, 2, 0, $11, $C 16 | dc.b 4, 9, 0, $31, $FC 17 | 18 | byte_D45A: dc.b 5 19 | dc.b $F4, 9, 0, $23, $F4 20 | dc.b 4, $D, 0, $29, $EC 21 | dc.b $EC, 4, 0, $F, $FC 22 | dc.b $F4, 2, 0, $11, $C 23 | dc.b 4, 9, 0, $31, $FC 24 | 25 | byte_D474: dc.b 5 26 | dc.b $F4, 8, 0, 0, $F4 27 | dc.b $FC, $E, 0, 3, $EC 28 | dc.b $EC, 4, 0, $F, $FC 29 | dc.b $F4, 2, 0, $11, $C 30 | dc.b 4, 9, 0, $37, $FC 31 | 32 | byte_D48E: dc.b 5 33 | dc.b $F4, 8, 0, $14, $F4 34 | dc.b $FC, $E, 0, $17, $EC 35 | dc.b $EC, 4, 0, $F, $FC 36 | dc.b $F4, 2, 0, $11, $C 37 | dc.b 4, 9, 0, $37, $FC 38 | 39 | byte_D4A8: dc.b 5 40 | dc.b $F4, 9, 0, $23, $F4 41 | dc.b 4, $D, 0, $29, $EC 42 | dc.b $EC, 4, 0, $F, $FC 43 | dc.b $F4, 2, 0, $11, $C 44 | dc.b 4, 9, 0, $37, $FC 45 | -------------------------------------------------------------------------------- /macros.asm: -------------------------------------------------------------------------------- 1 | opt ae- ; temporary!!! 2 | include "tools/LANG.ASM" 3 | 4 | align macro pos 5 | dcb.b ((\pos)-(offset(*)%(\pos)))%(\pos),$FF 6 | endm 7 | ; --------------------------------------------------------------------------- 8 | 9 | ; enum object, width 64 bytes 10 | id equ 0 11 | render equ 1 12 | tile equ 2 13 | map equ 4 14 | xpos equ 8 15 | xpix equ $A 16 | ypos equ $C 17 | ypix equ $E 18 | xvel equ $10 19 | yvel equ $12 20 | yrad equ $16 21 | xrad equ $17 22 | xdisp equ $18 23 | prio equ $19 24 | frame equ $1A 25 | anipos equ $1B 26 | ani equ $1C 27 | anilast equ $1D 28 | anidelay equ $1E 29 | col equ $20 30 | colprop equ $21 31 | status equ $22 32 | respawn equ $23 33 | act equ $24 34 | subact equ $25 35 | angle equ $26 36 | arg equ $28 37 | size equ $40 38 | 39 | ; --------------------------------------------------------------------------- 40 | 41 | ; enum player, width 64 bytes 42 | inertia equ $14 43 | air equ $20 44 | invulnerable equ $30 45 | invincible equ $32 46 | speedshoes equ $34 47 | sensorfront equ $36 48 | sensorback equ $37 49 | convex equ $38 50 | jumping equ $3C 51 | platform equ $3D 52 | lock equ $3E 53 | -------------------------------------------------------------------------------- /process.bat: -------------------------------------------------------------------------------- 1 | "tools/DisasmProcess.exe" "tools/s1proto.lst" "tools/s1proto.txt" "main.asm" 2 | -------------------------------------------------------------------------------- /screens/title/TitleSonic/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniTitleSonic: dc.w byte_6B26-AniTitleSonic 2 | 3 | byte_6B26: dc.b 7, 0, 1, 2, 3, 4, 5, 6, 7, $FE, 2 4 | even 5 | -------------------------------------------------------------------------------- /screens/title/TitleSonic/Sprite.map: -------------------------------------------------------------------------------- 1 | MapTitleSonic: dc.w byte_6CA8-MapTitleSonic, byte_6CDB-MapTitleSonic, byte_6D27-MapTitleSonic 2 | dc.w byte_6D7D-MapTitleSonic, byte_6DBF-MapTitleSonic, byte_6DF7-MapTitleSonic, byte_6E57-MapTitleSonic, byte_6EC1-MapTitleSonic 3 | 4 | byte_6CA8: dc.b $A 5 | dc.b 8, 8, 0, 0, 8 6 | dc.b $10, $F, 0, 3, 8 7 | dc.b $10, $F, 0, $13, $28 8 | dc.b $30, $E, 0, $23, 8 9 | dc.b $30, $E, 0, $2F, $28 10 | dc.b $48, $D, 0, $3B, 0 11 | dc.b $48, 9, 0, $43, $20 12 | dc.b $48, 0, 0, $49, $38 13 | dc.b $58, $C, 0, $4A, 8 14 | dc.b $58, 0, 0, $4E, $28 15 | 16 | byte_6CDB: dc.b $F 17 | dc.b $48, $E, 1, $BD, $20 18 | dc.b $38, 5, 1, $C9, $38 19 | dc.b $40, 0, 1, $CD, $30 20 | dc.b $48, 0, 1, $CE, $40 21 | dc.b $60, 0, 1, $CF, $20 22 | dc.b $10, $E, 0, $4F, 8 23 | dc.b $10, $E, 0, $5B, $28 24 | dc.b $18, 1, 0, $67, $48 25 | dc.b $28, 2, 0, $69, 0 26 | dc.b $28, $F, 0, $6C, 8 27 | dc.b $28, $F, 0, $7C, $28 28 | dc.b $30, 2, 0, $8C, $48 29 | dc.b $48, $E, 0, $8F, $10 30 | dc.b $48, 9, 0, $9B, $30 31 | dc.b $58, 4, 0, $A1, $30 32 | 33 | byte_6D27: dc.b $11 34 | dc.b $38, $E, 1, $BD, $28 35 | dc.b $28, 5, 1, $C9, $40 36 | dc.b $30, 0, 1, $CD, $38 37 | dc.b $38, 0, 1, $CE, $48 38 | dc.b $50, 0, 1, $CF, $28 39 | dc.b $20, $F, 1, $A9, 8 40 | dc.b $20, 3, 1, $B9, $28 41 | dc.b $10, $E, 0, $4F, 8 42 | dc.b $10, $E, 0, $5B, $28 43 | dc.b $18, 1, 0, $67, $48 44 | dc.b $28, 2, 0, $69, 0 45 | dc.b $28, $F, 0, $6C, 8 46 | dc.b $28, $F, 0, $7C, $28 47 | dc.b $30, 2, 0, $8C, $48 48 | dc.b $48, $E, 0, $8F, $10 49 | dc.b $48, 9, 0, $9B, $30 50 | dc.b $58, 4, 0, $A1, $30 51 | 52 | byte_6D7D: dc.b $D 53 | dc.b $10, $F, 0, $A3, 8 54 | dc.b 8, 8, 0, $B3, $28 55 | dc.b $10, $F, 0, $B6, $28 56 | dc.b $18, 0, 0, $C6, $48 57 | dc.b $20, 6, 0, $C7, $48 58 | dc.b $38, 0, 0, $CD, $48 59 | dc.b $30, $D, 0, $CE, 8 60 | dc.b $30, $E, 0, $D6, $28 61 | dc.b $40, $B, 0, $E2, $10 62 | dc.b $48, 8, 0, $EE, $28 63 | dc.b $50, 1, 0, $F1, 8 64 | dc.b $50, 4, 0, $F3, $28 65 | dc.b $58, 0, 0, $F5, $28 66 | 67 | byte_6DBF: dc.b $B 68 | dc.b 8, $F, 0, $F6, $10 69 | dc.b 8, $B, 1, 6, $30 70 | dc.b $10, 6, 1, $12, $48 71 | dc.b $28, $E, 1, $18, $18 72 | dc.b $28, $E, 1, $24, $38 73 | dc.b $28, 1, 1, $30, $10 74 | dc.b $40, $E, 1, $32, $10 75 | dc.b $40, 6, 1, $3E, $30 76 | dc.b $40, 4, 1, $44, $40 77 | dc.b $48, 0, 1, $46, $40 78 | dc.b $58, 8, 1, $47, $18 79 | 80 | byte_6DF7: dc.b $13 81 | dc.b $28, $E, 1, $E4, $38 82 | dc.b $18, 5, 1, $F0, $48 83 | dc.b $40, 8, 1, $F4, $38 84 | dc.b $48, 4, 1, $F7, $38 85 | dc.b $10, $F, 1, $4A, $10 86 | dc.b 8, 4, 1, $5A, $20 87 | dc.b 0, $B, 1, $5C, $30 88 | dc.b 8, 0, 1, $68, $48 89 | dc.b $18, 0, 1, $69, $48 90 | dc.b $18, 5, 1, $6A, 0 91 | dc.b $28, 2, 1, $6E, 8 92 | dc.b $30, $F, 1, $71, $10 93 | dc.b $20, $D, 1, $81, $30 94 | dc.b $20, 1, 1, $89, $50 95 | dc.b $30, 8, 1, $8B, $30 96 | dc.b $38, $E, 1, $8E, $30 97 | dc.b $50, $D, 1, $9A, 8 98 | dc.b $50, $C, 1, $A2, $28 99 | dc.b $58, 8, 1, $A6, $28 100 | 101 | byte_6E57: dc.b $15 102 | dc.b $28, $E, 1, $E4, $38 103 | dc.b $18, 5, 1, $F0, $48 104 | dc.b $40, 8, 1, $F4, $38 105 | dc.b $48, 4, 1, $F7, $38 106 | dc.b $18, $F, 1, $D0, 8 107 | dc.b $18, 3, 1, $E0, $28 108 | dc.b $10, $F, 1, $4A, $10 109 | dc.b 8, 4, 1, $5A, $20 110 | dc.b 0, $B, 1, $5C, $30 111 | dc.b 8, 0, 1, $68, $48 112 | dc.b $18, 0, 1, $69, $48 113 | dc.b $18, 5, 1, $6A, 0 114 | dc.b $28, 2, 1, $6E, 8 115 | dc.b $30, $F, 1, $71, $10 116 | dc.b $20, $D, 1, $81, $30 117 | dc.b $20, 1, 1, $89, $50 118 | dc.b $30, 8, 1, $8B, $30 119 | dc.b $38, $E, 1, $8E, $30 120 | dc.b $50, $D, 1, $9A, 8 121 | dc.b $50, $C, 1, $A2, $28 122 | dc.b $58, 8, 1, $A6, $28 123 | 124 | byte_6EC1: dc.b $16 125 | dc.b $18, 4, 1, $F9, $38 126 | dc.b $20, 0, 1, $FB, $38 127 | dc.b $28, 8, 1, $FC, $30 128 | dc.b $30, 1, 1, $FF, $30 129 | dc.b $30, $B, 2, 1, $38 130 | dc.b $18, $F, 1, $D0, 8 131 | dc.b $18, 3, 1, $E0, $28 132 | dc.b $10, $F, 1, $4A, $10 133 | dc.b 8, 4, 1, $5A, $20 134 | dc.b 0, $B, 1, $5C, $30 135 | dc.b 8, 0, 1, $68, $48 136 | dc.b $18, 0, 1, $69, $48 137 | dc.b $18, 5, 1, $6A, 0 138 | dc.b $28, 2, 1, $6E, 8 139 | dc.b $30, $F, 1, $71, $10 140 | dc.b $20, $D, 1, $81, $30 141 | dc.b $20, 1, 1, $89, $50 142 | dc.b $30, 8, 1, $8B, $30 143 | dc.b $38, $E, 1, $8E, $30 144 | dc.b $50, $D, 1, $9A, 8 145 | dc.b $50, $C, 1, $A2, $28 146 | dc.b $58, 8, 1, $A6, $28 147 | -------------------------------------------------------------------------------- /screens/title/TitleText/Sprite.ani: -------------------------------------------------------------------------------- 1 | AniTitleText: dc.w byte_6B34-AniTitleText 2 | 3 | byte_6B34: dc.b $1F, 0, 1, $FF 4 | -------------------------------------------------------------------------------- /screens/title/TitleText/Sprite.map: -------------------------------------------------------------------------------- 1 | MapTitleText: dc.w byte_6BE3-MapTitleText, byte_6BE2-MapTitleText, byte_6C01-MapTitleText 2 | 3 | byte_6BE2: dc.b 6 4 | 5 | byte_6BE3: dc.b 0, $C, 0, $F0, 0 6 | dc.b 0, 0, 0, $F3, $20 7 | dc.b 0, 0, 0, $F3, $30 8 | dc.b 0, $C, 0, $F4, $38 9 | dc.b 0, 8, 0, $F8, $60 10 | dc.b 0, 8, 0, $FB, $78 11 | 12 | byte_6C01: dc.b $1E 13 | dc.b $B8, $F, 0, 0, $80 14 | dc.b $B8, $F, 0, 0, $80 15 | dc.b $B8, $F, 0, 0, $80 16 | dc.b $B8, $F, 0, 0, $80 17 | dc.b $B8, $F, 0, 0, $80 18 | dc.b $B8, $F, 0, 0, $80 19 | dc.b $B8, $F, 0, 0, $80 20 | dc.b $B8, $F, 0, 0, $80 21 | dc.b $B8, $F, 0, 0, $80 22 | dc.b $B8, $F, 0, 0, $80 23 | dc.b $D8, $F, 0, 0, $80 24 | dc.b $D8, $F, 0, 0, $80 25 | dc.b $D8, $F, 0, 0, $80 26 | dc.b $D8, $F, 0, 0, $80 27 | dc.b $D8, $F, 0, 0, $80 28 | dc.b $D8, $F, 0, 0, $80 29 | dc.b $D8, $F, 0, 0, $80 30 | dc.b $D8, $F, 0, 0, $80 31 | dc.b $D8, $F, 0, 0, $80 32 | dc.b $D8, $F, 0, 0, $80 33 | dc.b $F8, $F, 0, 0, $80 34 | dc.b $F8, $F, 0, 0, $80 35 | dc.b $F8, $F, 0, 0, $80 36 | dc.b $F8, $F, 0, 0, $80 37 | dc.b $F8, $F, 0, 0, $80 38 | dc.b $F8, $F, 0, 0, $80 39 | dc.b $F8, $F, 0, 0, $80 40 | dc.b $F8, $F, 0, 0, $80 41 | dc.b $F8, $F, 0, 0, $80 42 | dc.b $F8, $F, 0, 0, $80 43 | -------------------------------------------------------------------------------- /sound/z80/DAC Driver.asm: -------------------------------------------------------------------------------- 1 | z80prog 0 2 | Z80Start: 3 | di 4 | di 5 | di 6 | ld sp, 1FF4h 7 | xor a 8 | ld (1FFDh), a 9 | ld a, (1FFBh) 10 | rlca 11 | ld (6000h), a 12 | ld b, 8 13 | ld a, (1FFAh) 14 | 15 | BankSwitchLoop: 16 | ld (6000h), a 17 | rrca 18 | djnz BankSwitchLoop 19 | jr CheckSamples 20 | ; --------------------------------------------------------------------------- 21 | DeltaTable: db 0, 1, 2, 4, 8, 10h, 20h, 40h, 80h, 0FFh, 0FEh, 0FCh 22 | db 0F8h, 0F0h, 0E0h, 0C0h 23 | ; --------------------------------------------------------------------------- 24 | 25 | CheckSamples: 26 | ld hl, 1FFFh 27 | 28 | WaitDACLoop: 29 | ld a, (hl) 30 | zor a 31 | jp p, WaitDACLoop 32 | push af 33 | push hl 34 | ld a, 80h 35 | ld (1FFDh), a 36 | ld hl, 4000h 37 | ld (hl), 2Bh 38 | inc hl 39 | ld (hl), 80h 40 | xor a 41 | ld (1FFDh), a 42 | dec hl 43 | ld ix, 1FFCh 44 | ld d, 0 45 | exx 46 | pop hl 47 | ld (1FF6h), a 48 | pop af 49 | ld (1FF7h), a 50 | zsub 81h 51 | ld (hl), a 52 | ld de, 0 53 | ld iy, 160h 54 | cp 6 55 | jr c, loc_73 56 | ld (1FF7h), a 57 | ld (1FF6h), a 58 | ld iy, (1FF8h) 59 | zsub 7 60 | 61 | loc_73: 62 | zadd a, a 63 | zadd a, a 64 | ld c, a 65 | zadd a, a 66 | zadd a, c 67 | ld c, a 68 | ld b, 0 69 | zadd iy, bc 70 | ld e, (iy+0) 71 | ld d, (iy+1) 72 | ld a, (1FF7h) 73 | zor a 74 | jp m, loc_8F 75 | ld hl, (1FF8h) 76 | zadd hl, de 77 | ex de, hl 78 | 79 | loc_8F: 80 | ld c, (iy+2) 81 | ld b, (iy+3) 82 | ld a, (iy+4) 83 | ld (1FFEh), a 84 | exx 85 | ld c, 80h 86 | exx 87 | 88 | loc_9F: 89 | ld hl, 1FFFh 90 | ld a, (de) 91 | zand 0F0h 92 | rrca 93 | rrca 94 | rrca 95 | rrca 96 | zadd a, DeltaTable 97 | exx 98 | ld e, a 99 | ld a, (de) 100 | zadd a, c 101 | ld c, a 102 | ld a, 80h 103 | ld (1FFDh), a 104 | ld b, (iy+0Bh) 105 | 106 | loc_B8: 107 | bit 7, (hl) 108 | jr nz, loc_B8 109 | ld (hl), 2Ah 110 | inc hl 111 | xor a 112 | ld (hl), c 113 | ld (1FFDh), a 114 | dec hl 115 | 116 | loc_C5: 117 | djnz offset(*) 118 | exx 119 | ld a, (de) 120 | zand 0Fh 121 | zadd a, DeltaTable 122 | exx 123 | ld e, a 124 | ld a, (de) 125 | zadd a, c 126 | ld c, a 127 | ld a, 80h 128 | ld (1FFDh), a 129 | ld b, (iy+0Bh) 130 | 131 | loc_DA: 132 | bit 7, (hl) 133 | jr nz, loc_DA 134 | ld (hl), 2Ah 135 | inc hl 136 | xor a 137 | ld (hl), c 138 | ld (1FFDh), a 139 | dec hl 140 | 141 | loc_E7: 142 | djnz offset(*) 143 | exx 144 | bit 7, (iy+5) 145 | jr nz, loc_F5 146 | bit 7, (hl) 147 | jp nz, WaitDACLoop 148 | 149 | loc_F5: 150 | inc de 151 | dec bc 152 | ld a, c 153 | zor b 154 | jp nz, loc_9F 155 | ld a, (1FFEh) 156 | zor a 157 | jp z, loc_153 158 | exx 159 | jp p, loc_10C 160 | zand 7Fh 161 | ld (ix+0), c 162 | 163 | loc_10C: 164 | dec a 165 | ld (1FFEh), a 166 | jr z, loc_133 167 | ld c, (ix+0) 168 | exx 169 | ld l, (iy+6) 170 | ld h, (iy+7) 171 | ld b, h 172 | ld c, l 173 | ld e, (iy+0) 174 | ld d, (iy+1) 175 | ld hl, (1FF8h) 176 | zadd hl, de 177 | ld e, (iy+2) 178 | ld d, (iy+3) 179 | zadd hl, de 180 | ex de, hl 181 | jp loc_9F 182 | ; --------------------------------------------------------------------------- 183 | 184 | loc_133: 185 | ld c, (ix+0) 186 | exx 187 | ld c, (iy+8) 188 | ld b, (iy+9) 189 | ld l, (iy+2) 190 | ld h, (iy+3) 191 | ld e, (iy+0) 192 | ld d, (iy+1) 193 | zadd hl, de 194 | ld de, (1FF8h) 195 | zadd hl, de 196 | ex de, hl 197 | jp loc_9F 198 | ; --------------------------------------------------------------------------- 199 | 200 | loc_153: 201 | ld hl, 1FF6h 202 | ld a, (hl) 203 | zor a 204 | jp m, CheckSamples 205 | xor a 206 | ld (hl), a 207 | jp CheckSamples 208 | ; --------------------------------------------------------------------------- 209 | 210 | DACList: dw dacKick 211 | dw (dacKick_End-dacKick) 212 | dw 0 213 | dw 0 214 | dw 0 215 | db 0 216 | db 14h 217 | 218 | dw dacSnare 219 | dw (dacSnare_End-dacSnare) 220 | dw 0 221 | dw 0 222 | dw 0 223 | db 0 224 | db 1 225 | 226 | dw dacTimpani 227 | dw (dacTimpani_End-dacTimpani) 228 | dw 0 229 | dw 0 230 | dw 0 231 | db 0 232 | TimpaniPitch: db 1Bh 233 | 234 | dacKick: incbin "sound/Z80/Kick.dpcm" 235 | dacKick_End: even 236 | dacSnare: incbin "sound/Z80/Snare.dpcm" 237 | dacSnare_End: even 238 | dacTimpani: incbin "sound/Z80/Timpani.dpcm" 239 | dacTimpani_End: even 240 | EndOfDriver: 241 | z80prog 242 | -------------------------------------------------------------------------------- /sound/z80/DAC Driver.i64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/sound/z80/DAC Driver.i64 -------------------------------------------------------------------------------- /sound/z80/Kick.dpcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/sound/z80/Kick.dpcm -------------------------------------------------------------------------------- /sound/z80/Snare.dpcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/sound/z80/Snare.dpcm -------------------------------------------------------------------------------- /sound/z80/Timpani.dpcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/sound/z80/Timpani.dpcm -------------------------------------------------------------------------------- /split.bat: -------------------------------------------------------------------------------- 1 | "tools/SplitROM.exe" "tools/s1proto.txt" "tools/s1proto.md" 2 | -------------------------------------------------------------------------------- /test.bat: -------------------------------------------------------------------------------- 1 | call split.bat 2 | call process.bat 3 | call build.bat 4 | call diff.bat 5 | -------------------------------------------------------------------------------- /tools/ASM68K.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/tools/ASM68K.EXE -------------------------------------------------------------------------------- /tools/DisasmProcess.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/tools/DisasmProcess.exe -------------------------------------------------------------------------------- /tools/SplitROM.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/tools/SplitROM.exe -------------------------------------------------------------------------------- /tools/VBinDiff.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/tools/VBinDiff.exe -------------------------------------------------------------------------------- /tools/fixheadr.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/tools/fixheadr.exe -------------------------------------------------------------------------------- /tools/s1proto.i64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mega-Drive-Developers-Collective/Sonic-1-Prototype/c4462cf8e36829ac0d27aadc3926cfe9fde875b0/tools/s1proto.i64 -------------------------------------------------------------------------------- /unknown/05BD2.map: -------------------------------------------------------------------------------- 1 | off_5BD2: dc.w byte_5BD6-off_5BD2, byte_5BE1-off_5BD2 2 | 3 | byte_5BD6: dc.b 2 4 | dc.b $F4, $B, 0, $3C, $E8 5 | dc.b $F4, $B, 0, $48, 0 6 | 7 | byte_5BE1: dc.b $A 8 | dc.b $F4, $F, 0, $CA, $E0 9 | dc.b 4, $F, 0, $DA, $E0 10 | dc.b $24, $F, 0, $DA, $E0 11 | dc.b $44, $F, 0, $DA, $E0 12 | dc.b $64, $F, 0, $DA, $E0 13 | dc.b $F4, $F, 8, $CA, 0 14 | dc.b 4, $F, 8, $DA, 0 15 | dc.b $24, $F, 8, $DA, 0 16 | dc.b $44, $F, 8, $DA, 0 17 | dc.b $64, $F, 8, $DA, 0 18 | -------------------------------------------------------------------------------- /unknown/06526.map: -------------------------------------------------------------------------------- 1 | off_6256: dc.w byte_625E-off_6256, byte_62AF-off_6256, byte_6300-off_6256, byte_637E-off_6256 2 | 3 | byte_625E: dc.b $10 4 | dc.b $C8, $E, 0, $60, $10 5 | dc.b $D0, $D, 0, $6C, $F0 6 | dc.b $E0, $D, 0, $74, $10 7 | dc.b $E0, $D, 0, $7C, $F0 8 | dc.b $D8, 6, 0, $84, $E0 9 | dc.b $D8, 6, 0, $8A, $D0 10 | dc.b $F0, $D, 0, $90, $10 11 | dc.b $F0, $D, 0, $9C, $F0 12 | dc.b $F0, 5, 0, $A4, $E0 13 | dc.b $F0, 5, 0, $A8, $D0 14 | dc.b 0, $D, 0, $94, $10 15 | dc.b 0, 5, 0, $AC, 0 16 | dc.b 0, $D, 0, $B0, $E0 17 | dc.b 0, 5, 0, $B8, $D0 18 | dc.b $10, $D, 0, $B0, $10 19 | dc.b $10, 5, 0, $BC, 0 20 | 21 | byte_62AF: dc.b $10 22 | dc.b $C8, $E, 0, $60, $10 23 | dc.b $D0, $D, 0, $6C, $F0 24 | dc.b $E0, $D, 0, $74, $10 25 | dc.b $E0, $D, 0, $7C, $F0 26 | dc.b $D8, 6, 0, $84, $E0 27 | dc.b $D8, 6, 0, $C0, $D0 28 | dc.b $F0, $D, 0, $90, $10 29 | dc.b $F0, $D, 0, $9C, $F0 30 | dc.b $F0, 5, 0, $A4, $E0 31 | dc.b $F0, 5, 0, $C6, $D0 32 | dc.b 0, $D, 0, $94, $10 33 | dc.b 0, 5, 0, $AC, 0 34 | dc.b 0, $D, 0, $B0, $E0 35 | dc.b 0, 5, 0, $BC, $D0 36 | dc.b $10, $D, 0, $B0, $10 37 | dc.b $10, 5, 0, $BC, 0 38 | 39 | byte_6300: dc.b $19 40 | dc.b $C8, 6, 0, $66, $20 41 | dc.b $C8, 6, 0, $60, $10 42 | dc.b $D0, 5, 0, $70, 0 43 | dc.b $D0, 5, 0, $6C, $F0 44 | dc.b $E0, 5, 0, $78, $20 45 | dc.b $E0, 5, 0, $74, $10 46 | dc.b $E0, 5, 0, $80, 0 47 | dc.b $E0, 5, 0, $7C, $F0 48 | dc.b $D8, 6, 0, $84, $E0 49 | dc.b $D8, 6, 0, $8A, $D0 50 | dc.b $F0, 5, 0, $94, $20 51 | dc.b $F0, 5, 0, $90, $10 52 | dc.b $F0, 5, 0, $A0, 0 53 | dc.b $F0, 5, 0, $9C, $F0 54 | dc.b $F0, 5, 0, $A4, $E0 55 | dc.b $F0, 5, 0, $A8, $D0 56 | dc.b 0, 5, 0, $94, $20 57 | dc.b 0, 5, 0, $94, $10 58 | dc.b 0, 5, 0, $AC, 0 59 | dc.b 0, 5, 0, $B0, $F0 60 | dc.b 0, 5, 0, $B0, $E0 61 | dc.b 0, 5, 0, $B8, $D0 62 | dc.b $10, 5, 0, $B0, $20 63 | dc.b $10, 5, 0, $B0, $10 64 | dc.b $10, 5, 0, $BC, 0 65 | 66 | byte_637E: dc.b $19 67 | dc.b $C8, 6, 0, $66, $20 68 | dc.b $C8, 6, 0, $60, $10 69 | dc.b $D0, 5, 0, $70, 0 70 | dc.b $D0, 5, 0, $6C, $F0 71 | dc.b $E0, 5, 0, $78, $20 72 | dc.b $E0, 5, 0, $74, $10 73 | dc.b $E0, 5, 0, $80, 0 74 | dc.b $E0, 5, 0, $7C, $F0 75 | dc.b $D8, 6, 0, $84, $E0 76 | dc.b $D8, 6, 0, $C0, $D0 77 | dc.b $F0, 5, 0, $94, $20 78 | dc.b $F0, 5, 0, $90, $10 79 | dc.b $F0, 5, 0, $A0, 0 80 | dc.b $F0, 5, 0, $9C, $F0 81 | dc.b $F0, 5, 0, $A4, $E0 82 | dc.b $F0, 5, 0, $C6, $D0 83 | dc.b 0, 5, 0, $94, $20 84 | dc.b 0, 5, 0, $94, $10 85 | dc.b 0, 5, 0, $AC, 0 86 | dc.b 0, 5, 0, $B0, $F0 87 | dc.b 0, 5, 0, $B0, $E0 88 | dc.b 0, 5, 0, $BC, $D0 89 | dc.b $10, 5, 0, $B0, $20 90 | dc.b $10, 5, 0, $B0, $10 91 | dc.b $10, 5, 0, $BC, 0 92 | -------------------------------------------------------------------------------- /unknown/Map02.map: -------------------------------------------------------------------------------- 1 | Map02: dc.w byte_4BFA-Map02, byte_4C00-Map02, byte_4C06-Map02, byte_4C30-Map02 2 | 3 | byte_4BFA: dc.b 1 4 | dc.b $F0, $F, $80, 0, $F0 5 | 6 | byte_4C00: dc.b 1 7 | dc.b $F0, $F, $80, $10, $F0 8 | 9 | byte_4C06: dc.b 8 10 | dc.b $80, $F, $80, $10, $F0 11 | dc.b $60, $F, $80, $10, $F0 12 | dc.b $40, $F, $80, $10, $F0 13 | dc.b $20, $F, $80, $10, $F0 14 | dc.b 0, $F, $80, $10, $F0 15 | dc.b $E0, $F, $80, $10, $F0 16 | dc.b $C0, $F, $80, $10, $F0 17 | dc.b $A0, $F, $80, $10, $F0 18 | even 19 | 20 | byte_4C30: dc.b 8 21 | dc.b $80, $F, $80, 0, $F0 22 | dc.b $60, $F, $80, 0, $F0 23 | dc.b $40, $F, $80, 0, $F0 24 | dc.b $20, $F, $80, 0, $F0 25 | dc.b 0, $F, $80, 0, $F0 26 | dc.b $E0, $F, $80, 0, $F0 27 | dc.b $C0, $F, $80, 0, $F0 28 | dc.b $A0, $F, $80, 0, $F0 29 | -------------------------------------------------------------------------------- /unknown/Map05.map: -------------------------------------------------------------------------------- 1 | Map05: dc.w byte_4D8E-Map05, byte_4D94-Map05, byte_4D9A-Map05 2 | dc.w byte_4DA0-Map05, byte_4DA6-Map05, byte_4DAC-Map05, byte_4DB2-Map05, byte_4DB8-Map05 3 | dc.w byte_4DBE-Map05, byte_4DC4-Map05, byte_4DCA-Map05, byte_4DD0-Map05, byte_4DD6-Map05 4 | dc.w byte_4DDC-Map05, byte_4DE2-Map05, byte_4DE8-Map05 5 | 6 | byte_4D8E: dc.b 1 7 | dc.b 0, 0, 0, 0, 0 8 | 9 | byte_4D94: dc.b 1 10 | dc.b 0, 0, 0, 1, 0 11 | 12 | byte_4D9A: dc.b 1 13 | dc.b 0, 0, 0, 2, 0 14 | 15 | byte_4DA0: dc.b 1 16 | dc.b 0, 0, 0, 3, 0 17 | 18 | byte_4DA6: dc.b 1 19 | dc.b 0, 0, 0, 4, 0 20 | 21 | byte_4DAC: dc.b 1 22 | dc.b 0, 0, 0, 5, 0 23 | 24 | byte_4DB2: dc.b 1 25 | dc.b 0, 0, 0, 6, 0 26 | 27 | byte_4DB8: dc.b 1 28 | dc.b 0, 0, 0, 7, 0 29 | 30 | byte_4DBE: dc.b 1 31 | dc.b 0, 0, 0, 8, 0 32 | 33 | byte_4DC4: dc.b 1 34 | dc.b 0, 0, 0, 9, 0 35 | 36 | byte_4DCA: dc.b 1 37 | dc.b 0, 0, 0, $A, 0 38 | 39 | byte_4DD0: dc.b 1 40 | dc.b 0, 0, 0, $B, 0 41 | 42 | byte_4DD6: dc.b 1 43 | dc.b 0, 0, 0, $C, 0 44 | 45 | byte_4DDC: dc.b 1 46 | dc.b 0, 0, 0, $D, 0 47 | 48 | byte_4DE2: dc.b 1 49 | dc.b 0, 0, 0, $E, 0 50 | 51 | byte_4DE8: dc.b 1 52 | dc.b 0, 0, 0, $F, 0 53 | -------------------------------------------------------------------------------- /unknown/Map2A.map: -------------------------------------------------------------------------------- 1 | Map2A: dc.w byte_6A30-Map2A, byte_6A45-Map2A 2 | 3 | byte_6A30: dc.b 4 4 | dc.b $F0, 8, 0, $EA, $F4 5 | dc.b $F8, 8, $10, $EA, $F4 6 | dc.b 0, 8, 0, $EA, $F4 7 | dc.b 8, 8, 0, $ED, $F4 8 | 9 | byte_6A45: dc.b 3 10 | dc.b $F0, 8, 0, $F0, $F4 11 | dc.b $F8, 8, $10, $F0, $F4 12 | dc.b 0, 9, 0, $F3, $F4 13 | -------------------------------------------------------------------------------- /unknown/Map45.map: -------------------------------------------------------------------------------- 1 | Map45: dc.w byte_9CA2-Map45, byte_9CB2-Map45, byte_9CC2-Map45 2 | dc.w byte_9CC8-Map45, byte_9CD3-Map45, byte_9CE8-Map45 3 | dc.w byte_9D07-Map45, byte_9D30-Map45, byte_9D30-Map45 4 | 5 | byte_9CA2: dc.b 3 6 | dc.b $E0, $B, 0, $1F, $F4 7 | dc.b 0, $B, $10, $1F, $F4 8 | dc.b $F0, 3, 0, $2B, $C 9 | 10 | byte_9CB2: dc.b 3 11 | dc.b $E8, $C, $12, $1B, $F0 12 | dc.b $FC, $C, $12, $1B, $F0 13 | dc.b $10, $C, $12, $1B, $F0 14 | 15 | byte_9CC2: dc.b 1 16 | dc.b $F0, 3, 8, $2B, $FC 17 | 18 | byte_9CC8: dc.b 2 19 | dc.b $F8, 5, 0, $41, $E0 20 | dc.b $F8, 5, 0, $41, $F0 21 | 22 | byte_9CD3: dc.b 4 23 | dc.b $F8, 5, 0, $41, $E0 24 | dc.b $F8, 5, 0, $41, $F0 25 | dc.b $F8, 5, 0, $41, 0 26 | dc.b $F8, 5, 0, $41, $10 27 | 28 | byte_9CE8: dc.b 6 29 | dc.b $F8, 5, 0, $41, $E0 30 | dc.b $F8, 5, 0, $41, $F0 31 | dc.b $F8, 5, 0, $41, 0 32 | dc.b $F8, 5, 0, $41, $10 33 | dc.b $F8, 5, 0, $41, $20 34 | dc.b $F8, 5, 0, $41, $30 35 | 36 | byte_9D07: dc.b 8 37 | dc.b $F8, 5, 0, $41, $E0 38 | dc.b $F8, 5, 0, $41, $F0 39 | dc.b $F8, 5, 0, $41, 0 40 | dc.b $F8, 5, 0, $41, $10 41 | dc.b $F8, 5, 0, $41, $20 42 | dc.b $F8, 5, 0, $41, $30 43 | dc.b $F8, 5, 0, $41, $40 44 | dc.b $F8, 5, 0, $41, $50 45 | 46 | byte_9D30: dc.b 8 47 | dc.b $F8, 5, 0, $41, $E0 48 | dc.b $F8, 5, 0, $41, $F0 49 | dc.b $F8, 5, 0, $41, 0 50 | dc.b $F8, 5, 0, $41, $10 51 | dc.b $F8, 5, 0, $41, $20 52 | dc.b $F8, 5, 0, $41, $30 53 | dc.b $F8, 5, 0, $41, $40 54 | dc.b $F8, 5, 0, $41, $50 55 | dc.b $F8, 5, 0, $41, $60 56 | dc.b $F8, 5, 0, $41, $70 57 | -------------------------------------------------------------------------------- /unknown/Map4B.map: -------------------------------------------------------------------------------- 1 | Map4B: dc.w byte_7FAC-Map4B, byte_7FDF-Map4B, byte_8008-Map4B, byte_801D-Map4B 2 | 3 | byte_7FAC: dc.b $A 4 | dc.b $E0, 8, 0, 0, $E8 5 | dc.b $E0, 8, 0, 3, 0 6 | dc.b $E8, $C, 0, 6, $E0 7 | dc.b $E8, $C, 0, $A, 0 8 | dc.b $F0, 7, 0, $E, $E0 9 | dc.b $F0, 7, 0, $16, $10 10 | dc.b $10, $C, 0, $1E, $E0 11 | dc.b $10, $C, 0, $22, 0 12 | dc.b $18, 8, 0, $26, $E8 13 | dc.b $18, 8, 0, $29, 0 14 | 15 | byte_7FDF: dc.b 8 16 | dc.b $E0, $C, 0, $2C, $F0 17 | dc.b $E8, 8, 0, $30, $E8 18 | dc.b $E8, 9, 0, $33, 0 19 | dc.b $F0, 7, 0, $39, $E8 20 | dc.b $F8, 5, 0, $41, 8 21 | dc.b 8, 9, 0, $45, 0 22 | dc.b $10, 8, 0, $4B, $E8 23 | dc.b $18, $C, 0, $4E, $F0 24 | 25 | byte_8008: dc.b 4 26 | dc.b $E0, 7, 0, $52, $F4 27 | dc.b $E0, 3, 8, $52, 4 28 | dc.b 0, 7, 0, $5A, $F4 29 | dc.b 0, 3, 8, $5A, 4 30 | 31 | byte_801D: dc.b 8 32 | dc.b $E0, $C, 8, $2C, $F0 33 | dc.b $E8, 8, 8, $30, 0 34 | dc.b $E8, 9, 8, $33, $E8 35 | dc.b $F0, 7, 8, $39, 8 36 | dc.b $F8, 5, 8, $41, $E8 37 | dc.b 8, 9, 8, $45, $E8 38 | dc.b $10, 8, 8, $4B, 0 39 | dc.b $18, $C, 8, $4E, $F0 40 | -------------------------------------------------------------------------------- /unknown/Map4F.map: -------------------------------------------------------------------------------- 1 | Map4F: dc.w byte_D310-Map4F, byte_D31B-Map4F 2 | 3 | byte_D310: dc.b 2 4 | dc.b $EC, $B, 0, 0, $F4 5 | dc.b $C, 8, 0, $C, $F4 6 | 7 | byte_D31B: dc.b 2 8 | dc.b $EC, $B, 0, $F, $F4 9 | dc.b $C, 4, 0, $1B, $FB 10 | -------------------------------------------------------------------------------- /unsorted/MapGiantSpikedBalls.map: -------------------------------------------------------------------------------- 1 | MapGiantSpikedBalls:dc.w byte_DF44-MapGiantSpikedBalls, byte_DF5E-MapGiantSpikedBalls, byte_DF64-MapGiantSpikedBalls 2 | 3 | byte_DF44: dc.b 5 4 | dc.b $E8, 4, 0, 0, $F8 5 | dc.b $F0, $F, 0, 2, $F0 6 | dc.b $F8, 1, 0, $12, $E8 7 | dc.b $F8, 1, 0, $14, $10 8 | dc.b $10, 4, 0, $16, $F8 9 | 10 | byte_DF5E: dc.b 1 11 | dc.b $F8, $D, 0, $18, $F0 12 | 13 | byte_DF64: dc.b 1 14 | dc.b $F8, 5, 0, $20, $F8 15 | -------------------------------------------------------------------------------- /unsorted/MapSpikedBalls.map: -------------------------------------------------------------------------------- 1 | MapSpikedBalls: dc.w byte_DE0E-MapSpikedBalls 2 | 3 | byte_DE0E: dc.b 1 4 | dc.b $F8, 5, 0, 0, $F8 5 | -------------------------------------------------------------------------------- /unsorted/Uknown Switch.map: -------------------------------------------------------------------------------- 1 | MapUnkSwitch: dc.w byte_687A-MapUnkSwitch 2 | 3 | byte_687A: dc.b 4 4 | dc.b $E8, 7, 0, $54, $F0 5 | dc.b 8, 5, 0, $5C, $F0 6 | dc.b $E8, 7, 0, $54, 0 7 | dc.b 8, 5, 0, $5C, 0 8 | --------------------------------------------------------------------------------