Sonic and Sega Retro Message Board: So I made something that renders Sonic Rush level maps - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
Loading News Feed...
 

So I made something that renders Sonic Rush level maps

#31 User is offline Techokami 

Posted 09 March 2011 - 08:09 AM

  • For use only on NTSC Genesis systems
  • Posts: 943
  • Joined: 19-November 05
  • Gender:Male
  • Location:HoleNet!
  • Project:Sonic Edge
  • Wiki edits:63
QUOTE (Cruizer @ Mar 5 2011, 08:04 PM)
So right now, there isn't anything that can create/view .bac sprite files?
I've been meaning to create a viewer, but laaaazyyyyyy

QUOTE (Cruizer @ Mar 5 2011, 08:04 PM)
Also I think I've made enough modifications to my script so it can handle all 3 map_eve files (rg, dc and ev). Although, until those .bacs are cracked and images are mapped, I can't actually go any further with the map creation due to lack of resources.

Also perhaps collision information is stored in .bac files? It doesnt seem that they are stored anywhere else.
.BAC files just store object art and animation. (It stores a hotspot for each frame of animation, which corresponds to the point mapped in those map_eve files.) The object collision data is probably hardcoded in the ROM itself.

#32 User is offline Cruizer 

Posted 12 March 2011 - 11:48 PM

  • Posts: 28
  • Joined: 21-November 09
  • Gender:Male
  • Location:Australia
  • Project:Reverse Engineering the Rush series
  • Wiki edits:38
QUOTE (Techokami @ Mar 10 2011, 12:09 AM)
.BAC files just store object art and animation. (It stores a hotspot for each frame of animation, which corresponds to the point mapped in those map_eve files.) The object collision data is probably hardcoded in the ROM itself.

Yeah, I noticed that with the spring object in Leaf Storm 1, Section 253. The Positioning of the 'hotspot' is 4 pixels lower than the spring sprite itself. Even with the rings, the hotspot is 16 pixels down and 8 pixels right. The only thing I'll need from .bacs are single, idle sprites (idle as in, when the object/decoration isn't being interacted with), hotspot locations in relation to the top left pixel, and the Object ID. I'm not sure if that last one is even in .bac myself, but I hope it is.

#33 User is offline Techokami 

Posted 19 March 2011 - 10:15 AM

  • For use only on NTSC Genesis systems
  • Posts: 943
  • Joined: 19-November 05
  • Gender:Male
  • Location:HoleNet!
  • Project:Sonic Edge
  • Wiki edits:63
QUOTE (Cruizer @ Mar 12 2011, 09:48 PM)
QUOTE (Techokami @ Mar 10 2011, 12:09 AM)
.BAC files just store object art and animation. (It stores a hotspot for each frame of animation, which corresponds to the point mapped in those map_eve files.) The object collision data is probably hardcoded in the ROM itself.

Yeah, I noticed that with the spring object in Leaf Storm 1, Section 253. The Positioning of the 'hotspot' is 4 pixels lower than the spring sprite itself. Even with the rings, the hotspot is 16 pixels down and 8 pixels right. The only thing I'll need from .bacs are single, idle sprites (idle as in, when the object/decoration isn't being interacted with), hotspot locations in relation to the top left pixel, and the Object ID. I'm not sure if that last one is even in .bac myself, but I hope it is.
All of that, except for the Object ID, should be present in the BAC file. Object IDs, I think are hardcoded in the game binary.

#34 User is offline Cruizer 

Posted 17 September 2011 - 10:48 AM

  • Posts: 28
  • Joined: 21-November 09
  • Gender:Male
  • Location:Australia
  • Project:Reverse Engineering the Rush series
  • Wiki edits:38
Long time no post. Anyway, I've finally gotten off my ass and pulled together a basic mapping script for .dc files. It works, except for the fact that there are no decoration sprites as of yet:

http://progsoc.org/~...zer/z11dual.png
(new hosting domain :o~, be wary, image is very large, may not load on some computers)

Anyway, each black box on the map represents a decoration of some sort, with it's Object ID in Cyan (#00FFFF). The only issue with mapping these, is that we need a link between sprites and IDs, and unless we find a way to find that in game, we'll have to do it the hard way: Going through it manually. The scripting will be easy, it's just a couple of minor changes and an image creator from the ID that has just been read.

The script for .ev files is also coming along nicely, just have to do a bit more fiddling with it. Once a Leaf Storm 1 map is made for it, it'll have to go through the same ID to Sprite linking as mentioned above. I'll post again soon with more updates on how all this is going.

EDIT: .ev is done serparately so it doesn't interfere with .dc.

http://progsoc.org/~...r/z11mapeve.png
This post has been edited by Cruizer: 17 September 2011 - 10:18 PM

#35 User is offline Techokami 

Posted 18 September 2011 - 07:35 AM

  • For use only on NTSC Genesis systems
  • Posts: 943
  • Joined: 19-November 05
  • Gender:Male
  • Location:HoleNet!
  • Project:Sonic Edge
  • Wiki edits:63
Some of the objects you are reading from the .ev file might not have associated .bac files, I'm seeing what looks like a lot of layer switching and special command objects, along with the Sonic player object (which is a model).

As for figuring out what object each ID is associated with, unless you can find an internal list in the ROM that also references .bac files to load for artwork you're going to have to do it manually/through brute force. I suggest you start with the decoration objects in .dc as there aren't any invisible objects in there to trip you up.

#36 User is offline Cruizer 

Posted 19 September 2011 - 04:12 AM

  • Posts: 28
  • Joined: 21-November 09
  • Gender:Male
  • Location:Australia
  • Project:Reverse Engineering the Rush series
  • Wiki edits:38
What you said is true. When looking at what .ev denoted, I found a neat little trick on the first rail section in Leaf Storm 1. Normally with rails, if you jump on one, you will fall through it. However, at this point where a .ev object was denoted on the rail itself, and when jumping on the rail over this point I landed back on the rail. That technically shouldn't happen, but presumably because of this particular Event ID, it allows you to. I'm assuming there's a whole host of events like this, some may be camera triggers (like the Rolling Disc at the end of Leaf Storm 2) or something else entirely. Also brute force was the intended method, because I haven't been able to find the Sprite IDs in the last 6 months. Anyway, next post I make will be a list of IDs and their corresponding sprites.

#37 User is offline Cruizer 

Posted 29 September 2011 - 06:22 AM

  • Posts: 28
  • Joined: 21-November 09
  • Gender:Male
  • Location:Australia
  • Project:Reverse Engineering the Rush series
  • Wiki edits:38
Double post! Okay, The Rush maps are being a bitch to me, so I'm doing Rush Adventure's ones now. From Plant Kingdom 2, I have produced a list of some .ev ID's with their corresponding purpose. Consider this the main post for the Sonic Rush Adventure EV ID List. And if I go far enough in, each ID's attributes will be described here.

00 - Triceratops Badnik
01 - Pirhana Badnik
02 - Pterodactyl Badnik

30 - Item Box (5 Rings/Tension Gauge Up/Tension MAX(?))
31 - Item Box (? Rings/Magnetic Shield)
39 - ????

41 - ????
42 - ????
43 - Spring (0 degree rotation)
43 - ????
45 - Spring (270 degree rotation)
46 - Spring (90 degree rotation)
48 - Spring (45 degree rotation)
49 - ????
4A - ????
4C - Spring (45 degree rotation / Smaller sprite)

50 - ????
51 - Mushroom Spring (Orange/0 degree rotation)
52 - Mushroom Spring (Pink/45 degree rotation)
53 - Mushroom Spring (Pink/315 degree rotation)
59 - Rails(?)/Proximity Animation (Leaves)(?)

63 - ????
64 - Rainbow Trick Ring
6A - ????
6B - Red Trick Ring

70 - ????
71 - Goal/Treasure Chest
72 - Start Position/Platform
73 - ????
76 - Swinging Vines
77 - Breakaway Walls (Wood/Vertical)
78 - 3D Section Initiator?
79 - 3D Section Terminator?
7B - ????
7C - Breakaway Walls (Wood/Horizontal)
7D - ????
7E - ????

8A - ????

94 - Tree Catapult (Plant Kingdom Zone Gimmick)

D1 - Vault(?)

This list is not final and can be changed at any time because, knowing me, I've gotten something wrong. If anyone can supply sprites for these, that would be greatly appreciated. In fact, if anyone can get all/some sprites from the games, you'll be saving so much time and effort (which are limited for me).

EDIT: Currently, all ID values are the only ones that occur in Plant Kingdom 1 and 2.
This post has been edited by Cruizer: 29 September 2011 - 07:53 AM

#38 User is offline Azu 

Posted 01 October 2011 - 09:30 PM

  • I must be stupid.
  • Posts: 1331
  • Joined: 23-February 08
  • Gender:Male
  • Location:Home
So, are you working on a level editor or something?
http://www.spriters-...ture/index.html

Not all of them, but there are some there. Do you just need still shot or complete rips?

#39 User is offline Cruizer 

Posted 02 October 2011 - 06:08 AM

  • Posts: 28
  • Joined: 21-November 09
  • Gender:Male
  • Location:Australia
  • Project:Reverse Engineering the Rush series
  • Wiki edits:38

View PostAzu, on 01 October 2011 - 09:30 PM, said:

So, are you working on a level editor or something?
http://www.spriters-...ture/index.html

Not all of them, but there are some there. Do you just need still shot or complete rips?


Well initially, the first goal is complete maps. After that, it'll require some more format investigation to get any sort of support for a level editor. I'll be willing to figure out what the individual level files do, they just require trial and error and a lot of time.

Also for the sprites, I'll need individual images for the objects with sprites. It'll make it easier to add to the script and map making process.

#40 User is offline Cruizer 

Posted 06 October 2011 - 03:07 AM

  • Posts: 28
  • Joined: 21-November 09
  • Gender:Male
  • Location:Australia
  • Project:Reverse Engineering the Rush series
  • Wiki edits:38
Double Post Again. I fixed my script, and this image is now fixed. I've pulled some of the IDs from Sonic Rush, and here comes it's list.


00 - Egg Pawn
01 - Egg Flapper
02 - Flying Egg Robos
03 - Egg Knight
04 - Underwater Egg Flapper
05 - Aqua Bomber (Purple)
06 - Aqua Bomber (Green)


30 - Item Box
Attributes Known:
Attribute 5: Item Identifier
Possible Values:
00 - ? Rings
01 - 5 Rings
02 - 1-Up
03 - Max Tension Gauge
04 - Tension Up
05 - Invincibility
06 - Shield
07 - Magnetic Shield


31 - Item Balloon
Attributes Known:
Attribute 5: Item Identifier
Known Values:
00 - ? Rings
01 - 5 Rings
02 - 1-Up
03 - Max Tension Gauge
04 - Tension Up
05 - Invincibility
06 - Shield
07 - Magnetic Shield



40 - Loop Event?
41 - Loop Event?
42 - Loop Event?
43 - Spring (0 deg)
44 - Spring (180 deg)
45 - Spring (270 deg)
46 - Spring (90 deg)
47 - Spring (315 deg)
48 - Spring (45 deg)
49 - Spring (225 deg)
4A - Spring (135 deg)
4B - Spring (315 deg, truncated)
4C - Spring (45 deg, truncated)
4D - Spikes (0 deg)

51 - Platform
Attributes Known:
Attribute 3: Platform Type
Known Values:
00 - Stationery/Moving
03 - ????
0C - ????
40 - Falling

Attribute 5: Horizontal Movement Speed
Attribute 6: Vertical Movement Speed
These values should be the same, except on opposing axes. Unknown at this time.

Attribute 7: Horizontal Displacement
Attribute 8: Vertical Displacement
These values should be the same, except on opposing axes.
00 - No Movement
01-FF - Movement Distance in Pixels?


52 - Long Platform
55 - Trampoline
56 - Wall Spring (Right to Left)
57 - Wall Spring (Left to Right)
58 - Bungee
59 - Rails (?)
5C - Dash Panel (Grey)
5D - Hidden/Cycling Spikes
5F - Dash Panel (Red)

63 - Trick Ring (Rainbow, Horizontal)
Attributes Known:
None


64 - Trick Ring (Rainbow, Vertical)
Attributes Known:
None


67 - Trick Ramp
68 - Horizontal Corkscrew Event
69 - Vertical Corkscrew Event
6A - Trick Ring (Red, Horizontal)
6B - Trick Ring (Red, Vertical)
6E - Checkpoint(?)
6F - Tree Stump

71 - Goal Ring
Attributes Known:
None


72 - Start Position
Attributes Known:
Attribute 4: Starting Speed??
Known Values:
64 - Constant Value Across All Stages


73- Camera Event??
75 - Big Loop Camera Holder
76 - Platform (Crumbling?/Unsure of other uses)
77 - Breakable Walls
78 - Rolling Saucer
79 - Saucer Trigger/Camera Event?
7A - Spiral Spring Gimmick
7B - ????(Slide Related)
7C - ????(Slide Related)
7D - ????(Slide Related)
7E - ????(Slide Related)
7F -

80 - Spiral Water Slide Handlers?
81 - Tipping Water Level Platforms
82 - Rotating Fan
83 - Water Currents
84 - Air Bubbles
85 - Water Spout
86 - Level Gimmick
87 - Level Gimmick
88 - Level Gimmick
89 - Level Gimmick
8A - Level Gimmick
8B - Level Gimmick
8C - Level Gimmick
8D - Level Gimmick
8E - Level Gimmick
8F - Level Gimmick


9D - Aerial Checkpoint Trigger
Attributes Known:
Attribute 5: Unknown
Known Values:
C0 - ????

Attribute 6: Unknown
Known Values:
A0 - ????

Attribute 7: Unknown
Known Values:
40 - ????

Attribute 8: Unknown
Known Values:
80 - ????


9E - Special Stage Entry Point

AA - Moveable Block



Green Text will mean an educated guess. I will not have run into that object yet, but I'd be fairly sure that it will be that object.

EDIT: All of Leaf Storm 1's IDs have been listed above. Before I move onto Leaf Storm 2, I'm going to try and grab info about Spring and Item Box/Balloon attributes.

EDIT 2: All Item Box values have been found. I'm tempted to test if it allows values from 08-FF, but that's low priority for now.
This post has been edited by Cruizer: 15 October 2011 - 12:33 AM

#41 User is offline Cruizer 

Posted 11 October 2011 - 12:39 AM

  • Posts: 28
  • Joined: 21-November 09
  • Gender:Male
  • Location:Australia
  • Project:Reverse Engineering the Rush series
  • Wiki edits:38
So I updated the script to be a bit more versatile in object investigation. Now it takes 4 $_GET inputs: lvl, which tells the script what level to parse; obj, which tells the parser which object to output data for; prnt which tells the script to make the object map;and debug which outputs every thing, this is used to check the working of the script. I'm tempted to add the parsing for .dc and .rg files so you just have 1 script. Anyway, back to working at objects!
This post has been edited by Cruizer: 12 October 2011 - 04:31 AM

  • 3 Pages +
  • 1
  • 2
  • 3
    Locked
    Locked Forum

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users