Sonic and Sega Retro Message Board: Random Hack/Mini Project Thread - Sonic and Sega Retro Message Board

Jump to content

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

Random Hack/Mini Project Thread

#16 User is offline SMTP 

Posted 05 July 2009 - 11:38 PM

  • Posts: 2144
  • Joined: 27-April 04
  • Gender:Male
  • Location:Ohio
  • Wiki edits:59
QUOTE (snkenjoi @ Jul 4 2009, 05:38 PM)
(the rest just have some new moves inserted)
S2SMTP



lol, Cool. I'm interested in how you inserted the code....

#17 User is offline nineko 

Posted 05 July 2009 - 11:55 PM

  • I am the Holy Cat
  • Posts: 5303
  • Joined: 17-August 06
  • Gender:Male
  • Location:italy
  • Project:I... don't even know anymore :U
  • Wiki edits:5,251
QUOTE (Cinossu @ Jul 5 2009, 05:20 PM)
I'm not sure I'm too fond of people hacking other people's hacks.. something about it just seems.. rude. :x I know we're basically just doing the same thing anyway, and it is an impressive feat with data all moved about and modified, but still.. something about it just feels wrong. Personal opinion.
I would love to see someone adding random features to my hack, actually, since that's all it always lacked. If snkenjoi or anyone else feels like taking over it, be my guest.

#18 User is offline GT Koopa 

Posted 06 July 2009 - 05:15 AM

  • Posts: 1458
  • Joined: 23-February 09
  • Gender:Male
  • Location:Elgin, IL
  • Project:Flicky Turncoat DX, T.L.W.S. Vs M.G.W.
  • Wiki edits:6
Man, there needs to be these boss competitions more often. Your ASCII Emperor reminds me of an Ecco type boss, namely globe holder.


Think tanks are good.

#19 User is offline Dr. Kylstein 

Posted 06 July 2009 - 02:31 PM

  • Posts: 84
  • Joined: 05-June 08
  • Gender:Not Telling
I started this shortly after joining. It's been on hold for a while.
Some highlights:
- There's a Chaotix blue-ring monitor near the beginning of EHZ act 1.
- Progress is saved unless you start from the options menu.
- Pick up two shields and it becomes magnetic.
- Do not change characters from the menu, that's probably broken because:
- You can switch between Sonic and Tails by pressing the A button. Do not let Sonic get behind, because I haven't coded the AI teleporting. Also, most of the game still considers Sonic to be the player: ring-loss, monitors, goals, etc.
- There's more changed and lots of bugs and graphical quirks.

The main concept was to make Tails useful and an equal to Sonic, and require the use of both characters together to progress. I only got as far as duplicating the AI and making them mostly interchangeable. Maybe I'll pick it back up, but I never did decide how to do two-character gameplay.

#20 User is offline Hivebrain 

Posted 06 July 2009 - 02:46 PM

  • Posts: 2394
  • Joined: 15-January 03
  • Gender:Male
  • Location:53.4N, 1.5W
  • Project:HivePal 2.0
  • Wiki edits:6,176
QUOTE (Hivebrain @ Jul 5 2009, 12:25 AM)
I wanted to squeeze Sonic 1 into 256kB. So far I've managed to get it down to 469kB:

http://www.fileden.com/files/2009/7/4/2498...20Optimised.zip

I think I can do 400kB, but 256 is never going to happen.

I shaved off another 11kB, making it 458kB:

http://www.fileden.com/files/2009/7/4/2498...mised%20458.zip

#21 User is offline Overlord 

Posted 06 July 2009 - 03:48 PM

  • Cat-herder
  • Posts: 13860
  • Joined: 12-January 03
  • Gender:Male
  • Location:Berkshire, England
  • Project:VGDB
  • Wiki edits:3,204
Nice.

Reminds me a bit of when Esrael got S2&K down to the 1MB of Sonic 2, though obviously that wasn't anywhere near as difficult in terms of amounts of data =P

#22 User is offline Andlabs 

  Posted 07 July 2009 - 10:49 AM

  • 「いっきまーす」
  • Posts: 2175
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
All right, some people were interested in the blue ring monitor code. Please excuse my use of the old disassembly; that's what I had =P

First, I need two variables: one as a flag to store whether or not we picked up a blue ring, and one to store the number of rings lost when you get hit with a blue ring in hand.

Syntax Highlighted Code: ASM
; Variables for maintaining the new features
HasBlueRing equ $FFFFFFFC ; byte
SavedRingCount equ $FFFFFFFD ; word


I use a macro to reset these variables whenever a level is loaded:

Syntax Highlighted Code: ASM
resetBlueRing macro
move.b #0,(HasBlueRing) ; take blue ring off
move.w #0,(SavedRingCount)
endm
; ...
PlayLevel: ; XREF: ROM:00003246j ...
; ...
move.l d0,($FFFFFE26).w ; clear score
resetBlueRing
; ...
Demo_Level:
; ...
move.l d0,($FFFFFE26).w ; clear score
resetBlueRing
; ...
Level_LoadObj:
; ...
move.b d0,($FFFFFE1B).w ; clear lives counter
resetBlueRing
loc_39E8:
; ...
move.b d0,($FFFFFE2E).w ; clear speed shoes
resetBlueRing
; ...
Cont_GotoLevel: ; XREF: Cont_MainLoop
; ...
move.l d0,($FFFFFE26).w ; clear score
resetBlueRing
; ...
Obj80_Main: ; XREF: Obj80_Index
; ...
move.w #0,($FFFFFE20).w ; clear rings
resetBlueRing
; ...
EndingDemoLoad: ; XREF: Credits
; ...
move.l d0,($FFFFFE26).w ; clear score
resetBlueRing
; ...
Boundary_Bottom:
; ...
clr.b ($FFFFFE30).w ; clear lamppost counter
resetBlueRing
; ...
KillSonic:
tst.w ($FFFFFE08).w ; is debug mode active?
bne.s Kill_NoDeath ; if yes, branch
resetBlueRing


If some of these are unnecessary, please let me know.

Okay now here's where we implement the actual code. First we need to modify the 10-ring monitor to give us a blue ring:

Syntax Highlighted Code: ASM
Obj2E_ChkRings:
cmpi.b #6,d0 ; does monitor contain 10 rings?
bne.s Obj2E_ChkS
move.b #1,(HasBlueRing)
rts


Next, when Sonic gets hurt, we coerce the game into thinking he only lost one ring:

Syntax Highlighted Code: ASM
HurtSonic:
tst.b ($FFFFFE2C).w ; does Sonic have a shield?
bne.s Hurt_Shield ; if yes, branch
tst.w ($FFFFFE20).w ; does Sonic have any rings?
beq.w Hurt_NoRings ; if not, branch
tst.b (HasBlueRing) ; does Sonic have a blue ring?
bne.s Hurt_Blue ; if yes, branch
jmp Hurt_LoseRings
 
Hurt_Blue:
move.b #0,(HasBlueRing) ; take it off
move.w ($FFFFFE20),(SavedRingCount) ; save # of rings
move.w #1,($FFFFFE20) ; only one ring at first
 
Hurt_LoseRings:
jsr SingleObjLoad
bne.s Hurt_Shield
move.b #$37,0(a1) ; load bouncing multi rings object
move.w 8(a0),8(a1)
move.w $C(a0),$C(a1)
 
Hurt_Shield:


Now we are going to change the bouncing multi-rings object. If the single ring that fell was collected, give the player back all his rings and take out the blue ring:

Syntax Highlighted Code: ASM
Obj37_Collect:				; XREF: Obj37_Index
addq.b #2,$24(a0)
move.b #0,$20(a0)
move.b #1,$18(a0)
tst.w (SavedRingCount) ; do we have saved rings?
bne.w RecollectRings ; if so, recollect the rings
bsr.w CollectRing
bra.w Obj37_Sparkle
 
RecollectRings:
move.w (SavedRingCount),($FFFFFE20)
ori.b #1,($FFFFFE1D).w ; update the rings counter
move.w #$B5,d0 ; play ring sound
jsr Obj25_PlaySnd
move.w #0,(SavedRingCount)
 
Obj37_Sparkle: ; XREF: Obj37_Index


But if the player failed to collect the ring before the game thinks that ring should be destroyed, we have to respawn the old rings and take out the blue ring:

Syntax Highlighted Code: ASM
Obj37_Delete:				; XREF: Obj37_Index
move.w ($FFFFF72E).w,d0
addi.w #$E0,d0
cmp.w $C(a0),d0 ; has object moved below level boundary?
bcs.s Obj37_DoDelete ; if yes, don't bother regenerating those rings
tst.w (SavedRingCount) ; did we save rings?
beq.w Obj37_DoDelete ; nope (or these are regenerated)
move.w (SavedRingCount),($FFFFFE20) ; generate
move.w #0,(SavedRingCount) ; kill those rings!
jsr HurtSonic
 
Obj37_DoDelete:
bra.w DeleteObject


The work to respawn the rings is left to HurtSonic. Sonic's hurt animation doesn't load because he didn't touch an enemy or spikes.

So that's it.
This post has been edited by Andlabs: 07 July 2009 - 06:42 PM

#23 User is offline Puto 

Posted 09 July 2009 - 11:34 AM

  • Shin'ichi Kudō, detective.
  • Posts: 2001
  • Joined: 31-July 05
  • Gender:Male
  • Location:Portugal, Oeiras
  • Project:Part of Team Megamix, but haven't done any actual work in ages.
  • Wiki edits:51
Sonineckles, literally just Knuckles slapped in Sonineko. With full permission by nineko, I might add - like Marc, I'm against the idea of hacking other people's hacks without getting permission.

#24 User is offline Andlabs 

Posted 25 July 2009 - 11:54 AM

  • 「いっきまーす」
  • Posts: 2175
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
A small update to WTF Lame which modifies what the game does on reset. In the original, you could reset to avoid reading the tl;dr. In this modification, if you reset during a tl;dr, you get another. Source code included.

Idea: when the Reset button is hit, nothing gets reinitialized, so both Port A and Port C are okay. (I added another check before the first RAM clear, just in case.) Note: by reset I mean hitting the reset button ("soft reset"), not the hard reset of some emulators.
This post has been edited by Andlabs: 25 July 2009 - 11:59 AM

#25 User is offline snkenjoi 

Posted 09 August 2009 - 06:38 AM

  • Posts: 67
  • Joined: 06-May 07
  • Wiki edits:26
Sonic 2 Headache

tiny.bin - (spritesmind thread)

#26 User is offline RGamer2009 

Posted 09 August 2009 - 11:26 AM

  • True Blue
  • Posts: 2403
  • Joined: 27-November 08
  • Gender:Male
  • Location:Wherever life takes me...
  • Wiki edits:3,086
QUOTE (snkenjoi @ Aug 9 2009, 07:38 AM)

DAMN. Sonic 2 Headache....uggggg *holds head in pain.

Also tiny.bin gives me a blue screen.

#27 User is offline Overlord 

Posted 09 August 2009 - 02:20 PM

  • Cat-herder
  • Posts: 13860
  • Joined: 12-January 03
  • Gender:Male
  • Location:Berkshire, England
  • Project:VGDB
  • Wiki edits:3,204
Me too, on tiny.bin.

The other rom - ahahahahaah! That's the most challenge EHZ has given me in YEARS =P

#28 User is offline Sik 

Posted 09 August 2009 - 05:07 PM

  • Sik is pronounced as "seek", not as "sick".
  • Posts: 6719
  • Joined: 17-March 06
  • Gender:Male
  • Project:being an asshole =P
  • Wiki edits:11
QUOTE (snkenjoi @ Aug 9 2009, 08:38 AM)
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

That said, it's sad that I could beat the first boss without getting hurt despite the camera being like that psyduck.png

#29 User is offline MainMemory 

  Posted 16 August 2009 - 01:25 PM

  • Every day's the same old thing... Same place, different day...
  • Posts: 3195
  • Joined: 14-August 09
  • Gender:Not Telling
  • Project:SonLVL
  • Wiki edits:1,339
Here's a truly Random Hack: Not-so-Super Sonic the Hedgehog 2!

Features:
Start as Super Sonic/Tails without invincibility or ring drain.
Level select and debug always enabled. (Hold A for level select)

Zones:
Straight Line Zone
Hidden Palace Zone (S3K) (Access through level select)

Updates are extremely unlikely.

Edit: Video of Straight Line Zone Act 1.
This post has been edited by MainMemory: 16 August 2009 - 01:48 PM

#30 User is offline GT Koopa 

Posted 31 August 2009 - 10:12 PM

  • Posts: 1458
  • Joined: 23-February 09
  • Gender:Male
  • Location:Elgin, IL
  • Project:Flicky Turncoat DX, T.L.W.S. Vs M.G.W.
  • Wiki edits:6


Link

This is my test hack of Sonic 1. I use it for random stuff, mainly for testing. Right now, use level select to go to Labyrinth Zone act 3, as I worked on a short layout today that might be interesting for you guys. I am already aware of the problems and glitches, mainly due to the labyrinth zone act 3 specific events, which I have to figure out how to disable. Tell me if you like it or not.

  • 39 Pages +
  • 1
  • 2
  • 3
  • 4
  • Last ►
    Locked
    Locked Forum

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