Sonic and Sega Retro Message Board: Some generic conception(s) - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
  • 3 Pages +
  • 1
  • 2
  • 3
    Locked
    Locked Forum

Some generic conception(s) Experimental hack

#1 User is offline qiuu 

Posted 17 August 2008 - 03:11 PM

  • Posts: 140
  • Joined: 05-February 08
  • Gender:Not Telling
  • Project:Blue Ball & Blocks
  • Wiki edits:13
I'd consider myself a beginner to hacking, just started off a little differently: I rather fiddled around with some asm and some simplistic art instead of concentrating on palettes and original layout.

Having always liked it, I extended on the smashable Marble Zone block allowing for the fragments to remain in the level, and set a level design around it. It is a attempt to add puzzle elements to a sonic game. As it is possible to screw up without dying, I case you get stuck, the teleport monitor will allow you to restart the level.
This version features two levels, the first one is very slow-paced featuring only the basic block object; I tried to speed up the second one adding some springs and new subtypes of the object featuring alternate gravity.
Level designs are preliminary, so if you suddenly see the sky full of blocks then it is a problem with the level layout.

Posted Image Posted Image

Collision with 16x16 blocks is rather awkward, so I'm contemplating rewriting the code for 32x32 blocks. Not quite certain though, as the blocks might get overly huge then...
I also intend to add a SolidObject check for the fragments, as due to the lack of it as of now some collision issues may arise when the blocks are landing on Sonic's feet.
Suggestions and thoughts on this are welcome.

I drew the foreground art myself, though it is obviously inspired by Fez and a Knytt Stories tileset by pip inspired by Fez. I'm admittedly a lousy artist.
The background art is from Marble Garden Zone with a custom layer deformation routine trying to resemble the original scrolling as closely as possible.
I haven't looked into music hacking yet (I usually play without sound anyways), so I just replaced the unsuitable CNZ music with EHZ2P, don't mean to say that it fits though...

Download link
Select any Act 1 for the first level and Act 2 for the second one.

EDIT 08-09-12: version 0.2.1 released, notes on it: http://forums.sonicretro.org/index.php?s=&...st&p=223837
This post has been edited by qiuu: 04 November 2009 - 02:47 PM

#2 User is offline Qjimbo 

Posted 17 August 2008 - 03:18 PM

  • Your friendly neighbourhood lemming.
  • Posts: 4437
  • Joined: 17-February 03
  • Gender:Male
  • Location:Vancouver
  • Wiki edits:69
Nice! I've seen you over at SSRG but never post, been quietly researching? :)

I really like the way the blocks break and the fragments pile, could lead to an interesting gameplay element.

#3 User is offline MoDule 

Posted 17 August 2008 - 03:29 PM

  • Posts: 308
  • Joined: 03-October 07
  • Gender:Male
  • Project:Procrastinating from writing bug-fix guides
  • Wiki edits:52
Just finished act 1 (even if I kind of glitched myself to the finish the first time). Very interesting. I look forward to what else you have in store for us.

Edit: Just finished act 2. Tricky.
This post has been edited by MoDule: 17 August 2008 - 03:38 PM

#4 User is offline Hitaxas 

Posted 17 August 2008 - 03:51 PM

  • SEGA: Sorry Classic Sonic, we are sending you back to 1994
  • Posts: 1436
  • Joined: 30-September 07
  • Gender:Male
  • Location:Back in Litchfield,CT
  • Project:Sonic: Super Deformed (head director) - Slowly working on it.
  • Wiki edits:196
Cool game play. I like the idea.
Also, awesome work on the custom BG deformation. :)

#5 User is offline Tweaker 

Posted 17 August 2008 - 05:16 PM

  • Posts: 12389
  • Joined: 27-June 04
  • Gender:Male
Extremely neat concept! Very challenging; too challenging for me, in fact, so I gave up. =P

This is a great technical achievement, though! You say you're new at hacking? You certainly could have fooled me, especially with the other posts you've made so far regarding layer deformation.

#6 User is offline FraGag 

Posted 17 August 2008 - 07:01 PM

  • Posts: 659
  • Joined: 09-January 08
  • Gender:Male
  • Location:Qu├ębec, Canada
  • Project:an assembler
  • Wiki edits:6
This is quite innovative, despite the glitches. I could finish act 2 but I can't figure out how to complete act 1 without debug. Keep working on it, I'd like to see where you'll get with this.

#7 User is offline Xkeeper 

Posted 17 August 2008 - 08:00 PM

  • get in the zone. badnikzone.
  • Posts: 1477
  • Joined: 10-February 06
  • Gender:Not Telling
  • Location:the bone zone
  • Project:herpa derpa doop
  • Wiki edits:221
I finished Act 1 with zipping by accident...

Act 2 just confused me and I gave up after many tries :P Very interesting, though.

#8 User is offline saxman 

Posted 17 August 2008 - 08:28 PM

  • Oldbie
  • Posts: 2625
  • Joined: 08-April 04
  • Gender:Male
  • Location:United States of America
  • Wiki edits:136
At first I didn't understand the object of it. But after playing with it a while, it became pretty addictive! Very interesting hack, I like it a lot!

BTW: Perhaps someone here could modify the assembly code to make the game check for collision directly under the player rather than to the left and right. That's the reason the collision is weird with 16x16 blocks.
This post has been edited by saxman: 17 August 2008 - 08:29 PM

#9 User is offline Soselocke 

Posted 17 August 2008 - 09:13 PM

  • MEEP MEEP MEEP
  • Posts: 659
  • Joined: 18-April 08
  • Gender:Male
  • Location:Used toilet paper.
  • Wiki edits:19
Gah, I had to use debug. I'd get about 3 feet in the first level and then I'm totally stumped. Cool idea though, despite me not being smart enough to figure it out.

#10 User is offline qiuu 

Posted 17 August 2008 - 10:26 PM

  • Posts: 140
  • Joined: 05-February 08
  • Gender:Not Telling
  • Project:Blue Ball & Blocks
  • Wiki edits:13
I'm glad you liked it, and thanks for your encouragement.
I think I'll attempt to fix some bugs and try to expand on the concept a little. I've got a few ideas left, and I'll be working on it whenever I'm in the mood to do so and have some spare time.

View PostQjimbo, on Aug 17 2008, 10:18 PM, said:

Nice! I've seen you over at SSRG but never post, been quietly researching? ;)
[...]
I'm mostly lurking at most places. I guess I haven't used invisible mode at the SSRG up to now. Changed that. :P (Sorry)

View PostTweaker, on Aug 18 2008, 12:16 AM, said:

[...]
This is a great technical achievement, though! You say you're new at hacking? You certainly could have fooled me, especially with the other posts you've made so far regarding layer deformation.
I guess I'm learning. The assembly syntax isn't really much to learn, and M68k seems to be one of the less difficult assembly language around, to boot. The actual difficulty is understanding the Sonic engine and hardware issues. Layer Deformation was one of the first concepts I understood as it doesn't require much knowledge on how things work ingame. Having a well documented assembly available and various other resources like the SCHG makes work a lot easier. It just takes some effort sometimes to figure out what routines exactly do and values exactly mean (like ObjCheckRightWallDist actually checks the distance to the left wall and vice versa), but I try to get as far as possible on my own.

View Postsaxman, on Aug 18 2008, 03:28 AM, said:

[...]
BTW: Perhaps someone here could modify the assembly code to make the game check for collision directly under the player rather than to the left and right. That's the reason the collision is weird with 16x16 blocks.

I think I have found the routines to be changed:
If sonic is standing on the floor, Sonic_Angle is checking the floor distance, and if Sonic is in a ball or in the air, Sonic_CheckFloor is called (via Sonic_DoLevelCollision).

I inserted the following code in Sonic_CheckFloor before loc_1ECC6 and in AnglePos before the Sonic_Angle routine is called:
Syntax Highlighted Code: ASM
	[color= #00bfff;]move[/color].[color= #00bfff;]b[/color]	([color= #ff0000;]$[/color][color= #ff0000;]FFFFF76A[/color]).[color= #00bfff;]w[/color],d3
[color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] d0,d1 [color= #adadad; font-style: italic;]; first and second distance value[/color]
[color= #00bfff;]ble[/color].[color= #00bfff;]s[/color] +
[color= #00bfff;]move[/color].[color= #00bfff;]b[/color] ([color= #ff0000;]$[/color][color= #ff0000;]FFFFF768[/color]).[color= #00bfff;]w[/color],d3 [color= #adadad; font-style: italic;]; use the other values[/color]
[color= #00bfff;]exg[/color] d0,d1
+
[color= #00bfff;]move[/color].[color= #00bfff;]w[/color] d1,-(sp) [color= #adadad; font-style: italic;]; store smaller distance[/color]
[color= #00bfff;]move[/color].[color= #00bfff;]b[/color] d3,([color= #ff0000;]$[/color][color= #ff0000;]FFFFF768[/color]).[color= #00bfff;]w[/color] [color= #adadad; font-style: italic;]; store the angle associated with that value[/color]
[color= #00bfff;]move[/color].[color= #00bfff;]w[/color] y_pos(a0),d2
[color= #00bfff;]move[/color].[color= #00bfff;]w[/color] x_pos(a0),d3 [color= #adadad; font-style: italic;]; check directly below sonic[/color]
[color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],d0
[color= #00bfff;]move[/color].[color= #00bfff;]b[/color] y_radius(a0),d0
[color= #00bfff;]ext[/color].[color= #00bfff;]w[/color] d0
[color= #00bfff;]add[/color].[color= #00bfff;]w[/color] d0,d2
[color= #00bfff;]lea[/color] ([color= #ff0000;]$[/color][color= #ff0000;]FFFFF76A[/color]).[color= #00bfff;]w[/color],a4
[color= #00bfff;]movea[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]10[/color][/color],a3
[color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],d6
[color= #00bfff;]bsr[/color].[color= #00bfff;]w[/color] FindFloor
[color= #00bfff;]move[/color].[color= #00bfff;]w[/color] (sp)+,d0
[color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],d2

Essentially it is a third check at the position directly under Sonic, and the minimum value for the distance and the associated angle are returned.
It seems to work, apparently.

It's 5:30am now, guess it's time to go to sleep...

#11 User is offline Rika Chou 

Posted 18 August 2008 - 12:41 AM

  • Adopt
  • Posts: 5195
  • Joined: 11-January 03
  • Gender:Not Telling
  • Location:CA US
  • Wiki edits:4
Wow, this is a neat hack. I got passed the first level because of some bug that forced me through the wall, then got a gameover on the second level.

I love it so far! Very addicting!

Edit: Just got passed both levels without using bugs or debug mode. Woo! There's this one bug in the second level that causes a lot of small floating blocks everywhere. It happens if you knock a certain block to the left and there is nothing to stop it so it goes off screen past the left boundary of the level.

Also, there is a bug in the first level where the screen will lock if you get too close to the signpost and makes it impossible to do anything.
This post has been edited by Rika Chou: 18 August 2008 - 12:57 AM

#12 User is offline saxman 

Posted 18 August 2008 - 01:03 AM

  • Oldbie
  • Posts: 2625
  • Joined: 08-April 04
  • Gender:Male
  • Location:United States of America
  • Wiki edits:136

View PostRika Chou, on Aug 18 2008, 01:41 AM, said:

There's this one bug in the second level that causes a lot of small floating blocks everywhere. It happens if you knock a certain block to the left and there is nothing to stop it so it goes off screen past the left boundary of the level.


I don't think that's a bug, I think he made that happen on purpose. I see no other way to beat the level other than to have those blocks there.

#13 User is offline Rika Chou 

Posted 18 August 2008 - 01:12 AM

  • Adopt
  • Posts: 5195
  • Joined: 11-January 03
  • Gender:Not Telling
  • Location:CA US
  • Wiki edits:4

View Postsaxman, on Aug 18 2008, 07:03 AM, said:

View PostRika Chou, on Aug 18 2008, 01:41 AM, said:

There's this one bug in the second level that causes a lot of small floating blocks everywhere. It happens if you knock a certain block to the left and there is nothing to stop it so it goes off screen past the left boundary of the level.


I don't think that's a bug, I think he made that happen on purpose. I see no other way to beat the level other than to have those blocks there.

Really? I beat it without those...and the block that causes it is used for something else.
This post has been edited by Rika Chou: 18 August 2008 - 01:18 AM

#14 User is offline roxahris 

Posted 18 August 2008 - 02:09 AM

  • Everyone's a hypocrite. Take my word for it.
  • Posts: 1224
  • Joined: 24-January 07
  • Gender:Male
  • Project:Doing anything at all
  • Wiki edits:30
This hack is great! I just beat it! A few bugs I noticed, though. In the second stage, that block near the spikes, if you break it to the left, eventually the screen will fill with blocks for no reason...

#15 User is offline saxman 

Posted 18 August 2008 - 02:22 AM

  • Oldbie
  • Posts: 2625
  • Joined: 08-April 04
  • Gender:Male
  • Location:United States of America
  • Wiki edits:136
After looking again, maybe it is a bug. I just assemed it was meant to do that because that's how I beat the level was creating those small platforms and jumping across, using the springs to climb up to the next row, and the next row, until I finally made it to the end. It actually works!

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

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