Difference between revisions of "Shippu Mahou Daisakusen/Reverse engineering notes"

From Shmups Wiki -- The Digital Library of Shooting Games
Jump to navigation Jump to search
(Initial draft)
 
m
Line 1: Line 1:
 
TODO: clean up addresses below pointing directly to bytes when code is operating on them as words. e.g., P1 lives @ 100555.b is probably referenced in the code as 100554.w  
 
TODO: clean up addresses below pointing directly to bytes when code is operating on them as words. e.g., P1 lives @ 100555.b is probably referenced in the code as 100554.w  
  
1006C6 - seems to consistently hold boss HP value when one is on screen
+
* 1006C6 - seems to consistently hold boss HP value when one is on screen
1006AA - base address of the boss enemy object
+
* 1006AA - base address of the boss enemy object
  
object+$04 - animation frame
+
* object+$04 - animation frame
object+$06 - animation related flags (sprite rotation, hit flash and/or palette?, etc.)
+
* object+$06 - animation related flags (sprite rotation, hit flash and/or palette?, etc.)
object+$08 - y-coord
+
* object+$08 - y-coord
object+$0A - x-coord
+
* object+$0A - x-coord
object+$1C - HP value for enemies. Damage value for projectiles/player, to apply against target enemy up to their specified durability cap
+
* object+$1C - HP value for enemies. Damage value for projectiles/player, to apply against target enemy up to their specified durability cap
object+$36 - i-frames
+
* object+$36 - i-frames
  
Code @ 13D78 - damage calculation for durable enemies
+
* Code @ 13D78 - damage calculation for durable enemies
Code @ 13F6A - damage calculation for zakos (uncapped)
+
* Code @ 13F6A - damage calculation for zakos (uncapped)
  
100551 - current play state?
+
* 100551 - current play state?
100553 - current play flags?
+
* 100553 - current play flags?
100555 - current P1 lives
+
* 100555 - current P1 lives
  
10058C = current calculated rank
+
* 10058C = current calculated rank
10058E = base rank for current stage
+
* 10058E = base rank for current stage
100590 = survival rank (resets on stage start or player death)
+
* 100590 = survival rank (resets on stage start or player death)
1006A4 = survival rank increment timer (does not reset on stage start)
+
* 1006A4 = survival rank increment timer (does not reset on stage start)
  
102C4A + $44 (102C8E) = base scroll speed?
+
* 102C4A + $44 (102C8E) = base scroll speed?
102C4A + $46 (102C90) =  
+
* 102C4A + $46 (102C90) =  
102C4A + $22 (102c6c) = speedometer?
+
* 102C4A + $22 (102c6c) = speedometer?
  
1012DA = P1 sub-weapon type
+
* 1012DA = P1 sub-weapon type
1012D8 = P1 sub-weapon power
+
* 1012D8 = P1 sub-weapon power
  
1005B1 - current stage
+
* 1005B1 - current stage
1005B3 - current track
+
* 1005B3 - current track
1005B5 - current loop (0 = first, 1 = second)  
+
* 1005B5 - current loop (0 = first, 1 = second)  
  
100656 - table of P1 track times
+
* 100656 - table of P1 track times
10066E - table of track selections
+
* 10066E - table of track selections

Revision as of 03:42, 2 April 2026

TODO: clean up addresses below pointing directly to bytes when code is operating on them as words. e.g., P1 lives @ 100555.b is probably referenced in the code as 100554.w

  • 1006C6 - seems to consistently hold boss HP value when one is on screen
  • 1006AA - base address of the boss enemy object
  • object+$04 - animation frame
  • object+$06 - animation related flags (sprite rotation, hit flash and/or palette?, etc.)
  • object+$08 - y-coord
  • object+$0A - x-coord
  • object+$1C - HP value for enemies. Damage value for projectiles/player, to apply against target enemy up to their specified durability cap
  • object+$36 - i-frames
  • Code @ 13D78 - damage calculation for durable enemies
  • Code @ 13F6A - damage calculation for zakos (uncapped)
  • 100551 - current play state?
  • 100553 - current play flags?
  • 100555 - current P1 lives
  • 10058C = current calculated rank
  • 10058E = base rank for current stage
  • 100590 = survival rank (resets on stage start or player death)
  • 1006A4 = survival rank increment timer (does not reset on stage start)
  • 102C4A + $44 (102C8E) = base scroll speed?
  • 102C4A + $46 (102C90) =
  • 102C4A + $22 (102c6c) = speedometer?
  • 1012DA = P1 sub-weapon type
  • 1012D8 = P1 sub-weapon power
  • 1005B1 - current stage
  • 1005B3 - current track
  • 1005B5 - current loop (0 = first, 1 = second)
  • 100656 - table of P1 track times
  • 10066E - table of track selections