Sonic and Sega Retro Message Board: Sonic Advance Hacking - Sonic and Sega Retro Message Board

Jump to content

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

Sonic Advance Hacking Just a general Sonic Advance hacking thread.

#1 User is offline Demonic722 

Posted 13 October 2014 - 04:01 PM

  • Posts: 6
  • Joined: 05-October 14
  • Gender:Male
  • Location:Pennsylvania
Over the course of a year or so, I've been hacking this game on and off. Before creating this thread, I've searched for a similar topic. Unfortunately, one doesn't exist until now. My reason for hacking this game was to not only relive memories from my childhood, but to also explore the greater possibilities that this game has to offer. Also, I would like to know if there are any other members interested in hacking this game with me. There are a lot of things that were left unhacked and this could potentially be a great experience for some.

When I first ventured into hacking this game, a memory from my childhood sparked. I remembered the in-game button cheat: up, right, down, right, L, right, R, right, a. By using these button combinations, one was able to have Tails play alongside Sonic. Here's where things get interesting. I thought to myself, "Why restrict Tails to only playing with Sonic?" This led to the creation of this Action Replay V3 code:

All Characters Can Play With Tails
84E37E9F 7366A900
65DA389A 09D8882C
5AEB3F0C 2D087A7D
65DA389A 09D8882C


A creative idea and modifying the game's assembly made this code possible. I found (possibly rediscovered) the address that determines whether or not the in-game button combination has been activated. I used that as a base for this code and found the routine. Here is my documentation:

0803CEAE 4819	ldr r0,=0x03005050	;@Always play with Tails ? 0 : 1 (no : yes)
0803CEB0 7800	ldrb r0,[r0]		;@Load a byte
0803CEB2 0600	lsl r0,r0,#0x18		;@r0 << 0x18
0803CEB4 1600	asr r0,r0,#0x18		;@r0 >> 0x18 (cancels the lsl)
0803CEB6 2800	cmp r0,#0x0		;@If you aren't playing with tails (didn't enable the code UP/RIGHT/DOWN/RIGHT/L/RIGHT/R/RIGHT/A)
0803CEB8 D00C	beq #0x0803CED4	        ;@Goto 0x0803CED4 (change to nop)
0803CEBA 2000	mov r0,#0x0		;@r0 = 0x0
0803CEBC 5628	ldsb r0,[r5,r0]		;@Load a character (0x03005084)
0803CEBE 2800	cmp r0,#0x0		;@If you're not Sonic
0803CEC0 D108	bne #0x0803CED4	        ;@You can't play with Tails (change to nop)


Video:
https://www.youtube....h?v=1FmaJfT2Rfg

Image:
Posted Image

Similarly, I've been trying to make the characters play alongside characters that aren't Tails. The codes are currently buggy, but I've released a video showing what I've accomplished.
https://www.youtube....h?v=K4Y_LfLB8po

Below the Tails check is a byte that actually loads Tails.
0803CECC 2001	mov r0,#0x1		;@Change this to load a different character besides Tails



I hope I get some feedback on this. More importantly, I hope this thread interests people in hacking this game.

#2 User is online MainMemory 

Posted 13 October 2014 - 04:09 PM

  • Every day's the same old thing... Same place, different day...
  • Posts: 4058
  • Joined: 14-August 09
  • Gender:Not Telling
  • Project:SonLVL
  • Wiki edits:1,339
I did something like this years ago by altering the current character variable:

Obviously less complete than your codes.

Also, I've written a basic sprite editor for all three games, but it doesn't display all the sprites properly, because the information I have is incomplete and probably completely wrong.

#3 User is offline Demonic722 

Posted 13 October 2014 - 04:21 PM

  • Posts: 6
  • Joined: 05-October 14
  • Gender:Male
  • Location:Pennsylvania
I wonder why I haven't stumbled across this video. Anyway, congrats! I created this code because of my statement in the first post. I also didn't think it has been done.

#4 User is offline Strife 

Posted 13 October 2014 - 07:42 PM

  • Posts: 1792
  • Joined: 19-October 11
  • Gender:Male
  • Location:United States
  • Project:Freedom Planet 2
I remember doing a small modification some time ago where I added the small tweaks to Tails and Amy's idle animations from Advance 3 (specifically how their ears flop around instead of remaining static). It was just a simple sprite edit but I can pass it over to you if you're interested.

Also, wasn't there a level/tile editor of some sort?

#5 User is online MainMemory 

Posted 13 October 2014 - 09:49 PM

  • Every day's the same old thing... Same place, different day...
  • Posts: 4058
  • Joined: 14-August 09
  • Gender:Not Telling
  • Project:SonLVL
  • Wiki edits:1,339
Sonic Advance Editor

I am kind of interested in a type of "SonLVL Advance", but not being able to edit object placement is really restrictive.

#6 User is offline Demonic722 

Posted 13 October 2014 - 10:46 PM

  • Posts: 6
  • Joined: 05-October 14
  • Gender:Male
  • Location:Pennsylvania
I made this code last week that allows the player to bypass the Special Stage limit. Maybe this code will inspire me to get better at the Special Stages since I was never really good at them.

Bypass Special Stage Limit
39DBF14E 3E49F34D
65DA389A 09D8882C


Here's a video: https://www.youtube....h?v=PLk3nmFXluA

The Assembly:
080932F8 4C23	ldr r4,=0x03005A20	;@r4 = 0x03005A20
080932FA 1C20	mov r0,r4		;@r0 = r4
080932FC 306E	add r0,#0x6E		;@r0 += 0x6E (0x03005A8E)
080932FE 7800	ldrb r0,[r0]		;@Read the byte at 0x03005A8E
08093300 0600	lsl r0,r0,#0x18		;@r0 << 0x18
08093302 1600	asr r0,r0,#0x18		;@r0 >> 0x18 (cancels the lsl)
08093304 2800	cmp r0,#0x0		;@If you've challenged the Special Stage
08093306 D15B	bne #0x080933C0	        ;@Goto 0x080933C0 (change to nop)


Edit: I updated the link to the video. The original one had very poor quality.
This post has been edited by Demonic722: 14 October 2014 - 02:32 AM

#7 User is offline E102 

Posted 13 October 2014 - 10:52 PM

  • "γ"
  • Posts: 88
  • Joined: 07-February 11
  • Gender:Male
  • Wiki edits:213
I've always wanted to know what tracks existed beyond the regular sound test numbers, as seen in this video. However, despite having the same program (Cheat Engine) I could never figure out just what I had to do to make it work. If you could identify and extract all the remaining tracks that aren't duplicates, sound effects, blank, etc. it would be a massive help.

https://www.youtube....h?v=-yOPcCW2tFM

#8 User is offline Demonic722 

Posted 14 October 2014 - 01:32 AM

  • Posts: 6
  • Joined: 05-October 14
  • Gender:Male
  • Location:Pennsylvania
I've actually seen that video. There appears to be great documentation on the available sounds in the game in the Wiki. I noticed that the used and unused tracks on that page and video were read by modifying the RAM location 0x0300271C. What about tracks 75 (0x4A), 109 (0x6C), 115 (0x72), 121 (0x78) or 127 (0x7E)? Are these used or unused? Perhaps we should look into getting a real sound modifier that works everywhere in the game. We should also look into setting up a Wiki page dedicated to notable RAM and ROM locations in these Sonic games. It would certainly be a convenience for those who need to reference them.
This post has been edited by Demonic722: 14 October 2014 - 01:34 AM

#9 User is offline ICEknight 

Posted 14 October 2014 - 03:17 AM

  • Posts: 10633
  • Joined: 11-January 03
  • Gender:Male
  • Location:Spain
  • Wiki edits:18
You guys already have all the music and sound effects extracted directly from the ROM in MIDI format, over here.

I don't think there's any unused music besides the Advance invincibility, but I may be remembering incorrectly.

#10 User is offline Retroman 

Posted 14 October 2014 - 04:05 AM

  • Unlike Sonic, I chuckle. Then I flex my muscles.
  • Posts: 659
  • Joined: 18-September 09
  • Gender:Male
load a sega genesis sonic rom hack or rom save or .bin file into the game using virtualboy and you hear a mysterious tune.

#11 User is offline KingofHarts 

Posted 10 November 2014 - 06:41 AM

  • Posts: 1552
  • Joined: 07-August 10
  • Gender:Male
  • Project:Sonic 1 Complete
  • Wiki edits:1
Because I didn't see any info in the SCHG... I've gone ahead and found a little more about the level data. Here are my notes on the uncompressed foreground art (Which I've got successfully loaded into Triad as a separate loading option):

Quote

The level foreground art is uncompressed, meaning you can open it in any tile editor that supports GBA 4BPP, or 4 bits per pixel (1 nybble per pixel). 8BPP (1 byte per pixel) is optional, if you want to edit the Title Screen art. Also one final thing to note is that the foreground is "nybble-swapped". Think of what byte-swapped means, and this should make total sense. I can confirm that the uncompressed sprite art follows suit to this format as well. All foreground art is $400 tiles, meaning all foreground art data is $8000 bytes.



AND the 96x96 Chunks... of which I've got the full format on how it draws each tile:

Quote

The 96x96 mappings are built up from 8x8 tiles, and not 16x16 as in the Gen/MD Sonic games. Each definition
of an 8x8 tile is 2 bytes in little endian format (byte swapped). For example,

4b1de1=A8 31

Because this is stored in little endian format... the actual tile definition data is 31 A8. The format of the bits is as follows:

PPPP YXII | IIII IIII

P: Palette - Ranges from 0-$F, as the tile can be drawn in any one of the 16 BKG palette lines.
Y: Y Flip - If set, the tile is flipped vertically.
X: X Flip - If set, the tile is flipped horizontally.
I: Tile Index - Ranges from 0-$3FF, and determines which tile is being drawn.

So this tile definition tells the chunk to draw tile # 1A8, with palette line 3.



I'm curious though as to how the game determines how tiles (or chunks) are drawn in front of or behind the character (aka priority)
This post has been edited by KingofHarts: 10 November 2014 - 01:18 PM

#12 User is offline E-122-Psi 

Posted 16 November 2014 - 02:58 PM

  • Posts: 1738
  • Joined: 29-December 09
  • Gender:Male
  • Wiki edits:41
Out of curiosity, have the character stats been found in the game yet? I'm interested to know if there are any differences between the four characters speed and control, or like the Genesis games, they're all exactly the same.

#13 User is offline KingofHarts 

Posted 17 November 2014 - 12:52 AM

  • Posts: 1552
  • Joined: 07-August 10
  • Gender:Male
  • Project:Sonic 1 Complete
  • Wiki edits:1
Not that I know of... I havent seen anything in the SCHG... though I'm inclined to look. Anyone have a good suggestion of the best emulator to use for RAM tracing? Something that works similar to how Gens does for the MEga drive would be grand.

#14 User is offline kazblox 

Posted 17 November 2014 - 03:51 PM

  • Posts: 120
  • Joined: 20-August 14
  • Gender:Male
  • Project:Sonic 3?

View PostE-122-Psi, on 16 November 2014 - 02:58 PM, said:

or like the Genesis games, they're all exactly the same.


Not exactly. Knuckles in S3K/SK has a slightly short jump height than Sonic or Tails to prevent him from jumping up to Sonic/Tails's AIZ1 Boss Arena without going from the rock.

#15 User is offline InvisibleUp 

Posted 17 November 2014 - 10:19 PM

  • Posts: 100
  • Joined: 10-November 12
  • Gender:Not Telling
  • Project:Sonic Redux (Sonic R hack)

View PostKingofHarts, on 17 November 2014 - 12:52 AM, said:

Not that I know of... I havent seen anything in the SCHG... though I'm inclined to look. Anyone have a good suggestion of the best emulator to use for RAM tracing? Something that works similar to how Gens does for the MEga drive would be grand.


Best emulator would probably be VBA-rerecording. It's designed for TASing so I'd imagine it would do whatever you need it to. Supposedly No$GBA is good too, but I've never tried it.

  • 2 Pages +
  • 1
  • 2
    Locked
    Locked Forum

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