Jump to content
  • 0

Damage charts for debug ROM


haddockd
 Share

Question

7 answers to this question

Recommended Posts

  • 0

Well, I couldn't find any references to the damage table within either of the disassembled actors so I had to look at pointers to actor 0x00AB's damage table in RAM (located at 0x98 in the actor panel) and I got this:

 

00 02 01 02 01 02 02 02 01 02 04 04 04 04 00 00
00 04 00 00 00 00 01 02 04 02 04 08 00 00 00 00
Located at 0x00B94EC0. It's weird because only modifying the damage amount seems to do anything, unlike the damage effect.

 

It would be worthwhile to investigate just where the damage table is set for this particular actor...

Link to comment
Share on other sites

  • 0

Naming conventions have always been a sticky issue. 'Objects' versus the older 'groups', 'path nodes' and 'waypoints'...etc. It helps to have a good naming convention from the beginning, but ultimately people are going to have their own terms.

 

Having said that, it doesn't directly contribute to the issue at hand. I'd suggest trying much larger/smaller values. If nothing changes, there's something secondary that you're missing, or you're looking at the wrong data.

Link to comment
Share on other sites

  • 0

I intend to make a push for more comprehensive documentation of actor files and their instanced structures when I get the motivation, and I just don't like the "actor panel" term.

 

More on topic: The references to damage charts are set via assembled code, and not stored as a pointer in the data block?

 

Edit: Even more weird, 0x00B94EC0 should fall within code, not one of the Flare Dancer actors

Link to comment
Share on other sites

  • 0

Hmm, I wonder if that is a generic damage table, perhaps? I know when I was doing some disassembly research on enemies a while back several enemies lacked unique damage tables (Ghoma Larvae come distinctly to mind, hinting that they were originally supposed to be use uniquely in the boss fight.) which are also used by a fair amount of the bosses.

 

I wonder if this damage table in code is something similar?

Link to comment
Share on other sites

  • 0

I intend to make a push for more comprehensive documentation of actor files and their instanced structures when I get the motivation, and I just don't like the "actor panel" term.

Hey, don't look at me; I first saw the term used by DL-77 while reading a couple of IRC chat logs. You can call it RAM actor "instance", etc.

 

More on topic: The references to damage charts are set via assembled code, and not stored as a pointer in the data block?

They are initially set up by calling a function that takes a pointer to the data block that is the start of the damage chart. Afterward, it's almost like a standard that the pointer is stored to 0x98 within the actor's instance though. Actually, I think all data from the start of the actor instance in RAM up to a length of 0x140 bytes follows a "standard": http://wiki.spinout182.com/w/Actors#Actor_Instances

 

That being said, I usually take advantage of this standard and look for code that directly sets where a pointer to the damage chart should be placed within the actor instance data.

 

Edit: Even more weird, 0x00B94EC0 should fall within code, not one of the Flare Dancer actors

Indeed, very weird. I could not find known code ("jal 0x8005C364") that directly sets up the damage chart nor could I find anything that sets standard instance data related to the damage chart. So, I went in the game, targeted a Flare Dancer "core", used the pointer at 0x80213CEC to grab the RAM address of the z-targeted actor (Flare Dancer "core") and then looked at the pointer stored at 0x98 within the actor's instance data.

 

Afrerwards, I tried modifying the damage effects within the damage chart via RAM but that seemed to have no effect. However, modifying the damage amount did produce the expected results.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.