Sonic and Sega Retro Message Board: AAAHH!!! Real Monsters! Genesis Hacking - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
Page 1 of 1
    Locked Forum

AAAHH!!! Real Monsters! Genesis Hacking Updated with more RAM addresses, as well as some subroutines.

#1 User is offline Ravenfreak 

Posted 16 April 2012 - 09:15 PM

  • Posts: 2644
  • Joined: 24-November 08
  • Gender:Male
  • Location:O'Fallon Mo
  • Project:Hacking some 8-bit Sonic game
  • Wiki edits:112
I got the urge to dig into one of my favorite games of all time, AAAHH!!! Real Monsters! Bellow are my notes, not much now but I've discovered something new about the game. ^_^ Anyway my notes are composed of a few RAM addresses, ASCII text within the ROM, and each screen id. Here they are:
Winner and Diploma ASCII Text: $27Ad9 
$27BEB- Hidden screen text 
RAM info. Not much here yet but it's something.
$B781- Unknown, setting it to 0E loads a glitchy HUD and the first level's music plays
$B78C- set this to be invincible (byte of course)
$B78D- Heart counter (byte)
$B99A- Horizontal camera scroll (Word) setting this will automatically make the camera scroll, even if you're not moving
The game consists of 44 different screens, holy shit! Anyway here they are listed bellow. Though I am not sure
what the screen mode RAM offset is located at, though I'll look into this more later. Note: Assignment 2 is unused,
because the boss fight is a different level all together. However, I have no clue why the programmers did this, would have
been more creative if they used the title card (that's what each Assignment screen is).
Level: 01   . Viacom      
Level: 02   . Title       
Level: 03   . Nickelodeon      
Level: 04   . Dump 1           
Level: 05   . Dump 2           
Level: 06   . Dump 3           
Level: 07   . Dump 4           
Level: 08   . Dump 5           
Level: 09   . Dump 6           
Level: 10   . Dump 7           
Level: 11   . Post Office 1    
Level: 12   . Post Office 2    
Level: 13   . Post Office 3    
Level: 14   . Mall 1           
Level: 15   . Continue         
Level: 16   . Hunter 1         
Level: 17   . Hunter 2         
Level: 18   . Dino 1           
Level: 19   . Dino 2           
Level: 20   . Gym 1            
Level: 21   . School 1         
Level: 22   . Options          
Level: 23   . Score            
Level: 24   . Legal Screen     
Level: 25   . Googleplex       
Level: 26   . Dump Bonus 1     
Level: 27   . Assignment 1     
Level: 28   . Assignment 2
Level: 29   . Assignment 3     
Level: 30   . Assignment 4     
Level: 31   . Assignment 5     
Level: 32   . Post Boss
Level: 33   . Diploma          
Level: 34   . Win              
Level: 35   . Credits          
Level: 36   . Intro Bed        
Level: 37   . Intro Hall       
Level: 38   . Game Over        
Level: 39   . Sega License     
Level: 40   . Assignment 1f    
Level: 41   . Assignment 2f    
Level: 42   . Assignment 3f    
Level: 43   . Assignment 4f    
Level: 44   . Assignment 5f

And if you skim over my notes, you've probably missed this tidbit. There's an unused screen that's programmed in but they decided not to use it. Usually on the final assignment screen of the last part of any level, the Gromble tells you what you need to find as well as who you need to scare. In the post office level, for some reason they decided to not describe who you're supposed to scare, instead it shows you what you need to find and you fight the boss of that level in a completely different level. (Usually you fight the boss within the same level, yet they have a transition from Post office 3 to Post Boss.) This is the unused screen:
Posted Image
This post has been edited by Ravenfreak: 21 April 2012 - 09:19 PM

#2 User is offline Shoemanbundy 

Posted 17 April 2012 - 12:47 AM

  • Posts: 990
  • Joined: 01-April 07
  • Gender:Male
  • Location:Chicago, Illinois
  • Project:selling shoes
  • Wiki edits:1
Thought I was one of the only people to have a soft spot for this game :) Cool find, I need to find more games to look for level ram values again, had fun doing that with games trying to find unused areas or screens :)

#3 User is offline Andlabs 

Posted 17 April 2012 - 08:05 AM

  • 「いっきまーす」
  • Posts: 2175
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
There's been a lot of work done already on this game over at TCRF; why not add to it? Everything you've found so far is new anyway, and that's only a good thing =P

#4 User is offline Ravenfreak 

Posted 21 April 2012 - 08:39 PM

  • Posts: 2644
  • Joined: 24-November 08
  • Gender:Male
  • Location:O'Fallon Mo
  • Project:Hacking some 8-bit Sonic game
  • Wiki edits:112
So I found some more stuff inside the ROM. Here are my new findings, and I'll probably edit this post just in case I miss something (because my notes are a huge jumbled mess right now, especially since I've been converting some subroutines from Hex to asm from hand. :v:) First I'll start with my RAM addresses, then some important subroutines. I labeled these as important because some people who would want to hack this game can start from there. Also the RAM addresses are in no particular order, because I simply just jotted them down as I found them. :v: Anyway here's my new findings, enjoy. :) (Also andlabs, I posted this over at tcrf and yes I'm Raven over at jul if you didn't read my intro topic. xP)
RAM addresses:
$FFFFE7E6- Setting this makes the garbage get thrown upwards (so I'm guessing the game checks to see if up and b was pressed
then it sets this)
$FFFFE836- Garbage thrown flag? (at address $B5BE in the ROM the game checks to see if B was pressed, and branches to the
appropriate routine. Setting this will prevent the player from throwing garbage.)
$FFFFE7F8- Dificulty flag (set to one to set it to Nightmare, the game is set to scary by default. However, when this is
set, the difficulty text on the options screen is gone.) This is checked by the subroutine at ROM address $F70C. The routine
right before it sets the life counter to 7, so if you wanted to change that value to anything it isn't difficult. Bellow are both subroutines converted from hex so it's easier to 
understand what's going on.
$FFFFE776- Garbage counter
$FFFFE774- Lives counter
$FFFFE778- Book counter
$FFFFE800- Player X coordinate update flag (used to update where the player should be after performing Ickis' special move, though its best not to edit this because it's very sensitive)
$FFFFE784- debug flag (Set this during gameplay to enable the Monsters Options and debug cheat.)
$FFE852-$FFE871- Button inputs are stored here for the Monsters Options cheat. Each are store as longword values. Bellow is the subroutine converted to asm so it's easier to understand.

Okay onto some subroutines:
$F702 in the ROM sets the life counter to 7. Right after that, the difficulty flag is checked, and the life counter is set
to 3. Here's the asm code, so it's easier to understand:
move.w #7,($FFFFE774).w; set number of lives
tst.w ($FFFFE7F8).w; check to see if the difficulty flag was set
beq.s $06; if it wasn't branch since we don't want to set the lives to 3
move.w #3,($FFFFE774).w; otherwise set the life counter to 3

This subroutine caps the book counter and it's located at ROM address $1A478:
cmpi.w  #9, ($FFFFE778).w; does the player have 9 books?
beq.s   $06; if not, branch

$197C6 contains the routine to cap the garbage counter. Have some more code:
cmpi.w  #$64, ($FFFFE778).w; is the garbage counter at 100?
blt.s   $08; if it's less than 100 branch
move.w  #$63, ($FFFFE778).w; cap the counter at 99

Here's the monsters options button check routine, but I converted this kind of fast so the branches might be off a bit... plus I actually converted the branches to ROM offsets. :v:
cmpi.l   $10404040,($FFFFE852).w
beq.s    $33C7; if there was no input or was incorrect, branch
cmpi.l   $10404040,($FFFFE856).w
bne.s    $3431
cmpi.l   $10404040,($FFFFE85A).w
bne.s    $3431
cmpi.l   $10404040,($FFFFE85E).w; was BAAA pressed?
bne.s    $3431; if so, branch
cmpi.l   $40404020,($FFFFE862).w; was AAAC pressed?
bne.s    $3431; if so, branch
cmpi.l   $10404040,($FFFFE866).w; was BAAA pressed?
bne.s    $3431; if so, branch
cmpi.l   $10404040,($FFFFE86A).w; was BAAA pressed again? Note: Both the debug cheat and hidden screen cheat uses this RAM address
bne.s    $3431; if so, branch
cmpi.l   $10404040,($FFFFE86E).w; was BAAA pressed yet again? Note: the hidden screen cheat uses this address as well
bne.s    $3431; if so, branch
cmpi.l   $20202040,($FFFFE871).w; was CCCA pressed?
jmp      $343E; if so, we need to set the debug flag

Button values are exactly the same from the Sonic games (of course it's still a Mega Drive/Genesis game, so it uses these global values. xP) so if you wanted to change these it wouldn't be difficult. Anyway those are my findings as of today.

#5 User is offline Ravenfreak 

Posted 23 April 2012 - 03:43 PM

  • Posts: 2644
  • Joined: 24-November 08
  • Gender:Male
  • Location:O'Fallon Mo
  • Project:Hacking some 8-bit Sonic game
  • Wiki edits:112
Sorry for the double post, but since I am documenting all this stuff I decided it was time to actually make a hack. Also one thing I forgot to note (and many of you Techies probably knew this) but in order to actually change any of the button presses for the Monsters Options cheat you need to add padding, otherwise the ROM will break. :v: Here's my ROM hack, it aims to make the game a bit more difficult. You start with 3 lives on Scary, 1 on Nightmare. And all those button presses are a thing of the past, cause now you only need to pause the game, press B 9x, unpause the game, press A and then pause the game again. (Eh maybe the same amount of effort, but pressing all those buttons is a pain in the ass IMO...)
I know it's not much, but meh. Oh and I found 2 more RAM addresses. Here they are:
$FFFFE83A- Right boundary screen lock. Used during boss fights. (byte)
$FFFFB818- Screen shaking flag. If you are sensitive to this kind of stuff, I suggest you don't set this flag because the screen shakes violently. (word)

Page 1 of 1
    Locked Forum

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