├── .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 |
--------------------------------------------------------------------------------