If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Ivan "Ironman" Stewart's Super Off Road/RAM map: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
TheouAegis (talk | contribs) (WIP. Posting now because lights just flickered and I've already added so much.) |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{rammap|game=Ivan "Ironman" Stewart's Super Off-Road}} | {{rammap|game=Ivan "Ironman" Stewart's Super Off-Road}} | ||
==Variables== | ==Gamepad/Controller Variables== | ||
* | Gamepad buttons are automatically set for CPU racers | ||
* | * 026: Gamepad 1 Buttons | ||
* | * 027: Gamepad 1 Button Pressed | ||
** | * 028: Gamepad 2 Buttons | ||
** | * 029: Gamepad 2 Button Pressed | ||
* 723: Current track (Determined by Race Number and table FB69) | * 02A: Gamepad 3 Buttons | ||
* 02B: Gamepad 3 Button Pressed | |||
* 02C: Gamepad 4 Buttons | |||
* 02D: Gamepad 4 Button Pressed | |||
The following temporary variables are used to calculate "pressed" buttons | |||
* 02E: Gamepad 1 Previous Buttons | |||
* 02F: Gamepad 2 Previous Buttons | |||
* 030: Gamepad 3 Previous Buttons | |||
* 031: Gamepad 4 Previous Buttons | |||
==General Variables== | |||
* 024-025: Randomizer | |||
* 033: Current Car (temporary) | |||
* 04C-04D: Previous X-Coordinate (mid-race) / Racer Position A (post-race) | |||
* 04E-04F: Previous Y-Coordinate (mid-race) / Racer Position B (post-race) | |||
* 05A: First Place Car (post-race) | |||
* 05B: Second Place Car (post-race) | |||
* 05C: Third Place Car (post-race) | |||
* 05D: Last Place Car (post-race) | |||
* 05E-05F: Previous Z-Coordinate (mid-race) | |||
* 060-061: Player Struct Address | |||
* 723: Current track (Determined by Race Number 7E0 and table FB69) | |||
** 00 = Sidewinder | ** 00 = Sidewinder | ||
** 01 = Huevos Grande | ** 01 = Huevos Grande | ||
Line 16: | Line 38: | ||
** 06 = Blaster | ** 06 = Blaster | ||
** 07 = Cliffhanger | ** 07 = Cliffhanger | ||
** 08-0F = Reversed versions of 00-07. | ** 08-0F = Reversed versions of 00-07.* 72D: Number of Players (1-4), set to 0 during the demo race | ||
* 725: Current Player (temporary) | |||
** Parent variable of $033 | |||
* 727: Current Car Tire Traction | |||
* 728: Flagger Timer | |||
* 729: Bonus Item Value | |||
** Determines sprite, palette, and bonus value | |||
* 72A: Bonus Item X | |||
* 72B: Bonus Item Y | |||
* 72C: Bonus Item Timer | |||
* 736: Frame Counter | |||
* 737-73B: Stopwatch | |||
* 746: HUD Draw Timing | |||
** Updates laps & nitros if less than 4, otherwise updates every other digit in stopwatch (max 0x06) | |||
* 74E-751: Prize Amount (post-race) | |||
* 754: Current Car Airborne Value | |||
* 7AC: Continue Allowed | |||
* 7AD-7AE: CPU Reverse Delay | |||
** Starts at 0x12C each race, ignores 72E-735 while counting down | |||
* 7AF: Race Number | |||
** Determines CPU difficulty, etc. | |||
* 7B0: Race Checkpoint Number (0x0E = championship start, 0x63 = championship/game over) | |||
* 7CA: Name Entry Input Delay | |||
** Ignores gamepad input on Name Entry screen every 0x0A frames | |||
* 7DE: Cash Bonus Value | |||
** From 0x01 to 0x05, but 0x06 also works | |||
* 7DF: Nitro Bonus Value | |||
** From 0x07 to 0x0F | |||
* 7E0: Race Track Pointer | |||
** Counts up to 0x2A then loops back to 0x1B, determines race track | |||
* 7E2: Game Difficulty/CPU Minimum Speed (20-DC) | |||
** Initial Value is 0x20 and increases by 2 on race number 2, 4, 6, 8, and 10+ | |||
** CPU speed will always be between 0x30 and 0xB0, however | |||
* | ==Player Arrays== | ||
Note: If all players are eliminated, or there are 0 players in the game, the game crashes at the menu between races. | Note: These are all in sets of 4, in order of player | ||
* 05A-05D: Y-Coordinate Placeholder (mid-race) | |||
** Cars are moved to top of screen during collision checks, this saves their y-coordinates | |||
* 083-086: X-Coordinate | |||
* 087-08A: Subpixel X-Coordinate | |||
* 08B-08E: Y-Coordinate | |||
* 08F-092: Subpixel Y-Coordinate | |||
* 093-096: Driving Direction | |||
** Between 0x00 (left) and 0xBF | |||
* 097-09A: Speed | |||
* 09B-09E: Z-Coordinate / Height | |||
* 09F-0A2: Fractional Z-Coordinate / Height | |||
* 0A3-0A6: Airspeed | |||
* 0A7-0AA: Fractional Airspeed | |||
* 0AB-0AE: Gravity | |||
** Increases while in air, then added to Airspeed | |||
* 0AF-0B2: Shadow Z-Coordinate / Height | |||
* 0B3-0B6: Hangtime | |||
** Set to 1/64th car Speed upon leaving the ground | |||
* 0B7-0BA: Steering Direction | |||
** Between 0x00 (left) and 0xBF | |||
** Every 8 angles changes sprite, allowing for 24 sprites | |||
* 0BB-0BE: Pitch | |||
** From 0x01 (slightly angled) to 0x07 (steep angle), or 0x08 (level) | |||
* 0BF-0C2: Sprite Address (low-byte) | |||
* 0C3-0C6: Sprite Address (high-byte) | |||
* 0C7-0CA: Nitro State | |||
* 0CB-0CE: Nitro Timer | |||
* 0CF-0D2: Nitro Sprite (low-byte) | |||
* 0D3-0D6: Nitro Sprite (high-byte) | |||
* 0D7-0DA: Turning Direction | |||
* 0DB-0DE: Centrifuge | |||
** Resistance to turning, based on Speed | |||
* 72E-731: Reverse Point X-Coordinate | |||
* 732-735: Reverse Point Y-Coordinate | |||
** These may have been a used at some point to prevent CPU cars getting stuck | |||
* 74A-74D: Calculated Pitch (mid-race) | |||
* 74E-751: Calculated Z-Coordinate (mid-race) | |||
* 755-758: Previous Pitch (nose/tail angle) | |||
** 0x01 = slight pitch, 0x07 = steep pitch, 0x08 = level | |||
* 75D-760: Lives | |||
* 7A8-7AB: Eliminated Flag | |||
** 00 = live, FF = eliminated, CPU plays for this player | |||
** Note: If all players are eliminated, or there are 0 players in the game, the game crashes at the menu between races. | |||
==Player Structs== | |||
Player structure located around address $300, has 0x47 bytes per player. | |||
===Player 1:=== | ===Player 1:=== | ||
* 300-303: Name | |||
* 304: Negative Cash Balance | |||
** Drops to 0xFF if player has insufficient funds | |||
* 305-30C: Money (8 digits, left digit first) | * 305-30C: Money (8 digits, left digit first) | ||
* 30D: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | * 30D: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | ||
Line 32: | Line 133: | ||
* 311: Acceleration (0-6) | * 311: Acceleration (0-6) | ||
* 312: Top Speed (0-6) | * 312: Top Speed (0-6) | ||
* 313- | * 313-33A: Track Records | ||
* 33C: Cash Picked Up | |||
* 33D: Car ID | |||
* 33E: Gamepad Pointer | |||
** Refer to variables 026-02D | |||
* 33F: Lap Counter (1-5, set to 05 to instantly win a race) | * 33F: Lap Counter (1-5, set to 05 to instantly win a race) | ||
* 344: | * 340: Debris Sprite | ||
* | * 341: Debris X-Coordinate | ||
* | * 342: Debris Y-Coordinate | ||
* 343: Debris Animation Timer | |||
* 344: Track Position | |||
* 345: Track Data Offset | |||
* 346: Airborne | |||
** Set when off the ground, prevents acceleration | |||
===Player 2:=== | ===Player 2:=== | ||
* 347-34A: Name | |||
* 34B: Negative Cash Balance | |||
** Drops to 0xFF if player has insufficient funds | |||
* 34C-353: Money (8 digits, left digit first) | * 34C-353: Money (8 digits, left digit first) | ||
* 354: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | * 354: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | ||
Line 46: | Line 159: | ||
* 358: Acceleration (0-6) | * 358: Acceleration (0-6) | ||
* 359: Top Speed (0-6) | * 359: Top Speed (0-6) | ||
* 35A- | * 35A-381: Track Records | ||
* 383: Cash Picked Up | |||
* 384: Car ID | |||
* 385: Gamepad Pointer | |||
** Refer to variables 026-02D | |||
* 386: Lap Counter (1-5, set to 05 to instantly win a race) | * 386: Lap Counter (1-5, set to 05 to instantly win a race) | ||
* 38B: | * 387: Debris Sprite | ||
* | * 388: Debris X-Coordinate | ||
* | * 389: Debris Y-Coordinate | ||
* 38A: Debris Animation Timer | |||
* 38B: Track Position | |||
* 38C: Track Data Offset | |||
* 38D: Airborne | |||
** Set when off the ground, prevents acceleration | |||
===Player 3:=== | ===Player 3:=== | ||
* 38E-391: Name | |||
* 392: Negative Cash Balance | |||
** Drops to 0xFF if player has insufficient funds | |||
* 393-39A: Money (8 digits, left digit first) | * 393-39A: Money (8 digits, left digit first) | ||
* 39B: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | * 39B: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | ||
Line 60: | Line 185: | ||
* 39F: Acceleration (0-6) | * 39F: Acceleration (0-6) | ||
* 3A0: Top Speed (0-6) | * 3A0: Top Speed (0-6) | ||
* 3A1- | * 3A1-3C8: Track Records | ||
* 3CA: Cash Picked Up | |||
* 3CB: Car ID | |||
* 3CC: Gamepad Pointer | |||
** Refer to variables 026-02D | |||
* 3CD: Lap Counter (1-5, set to 05 to instantly win a race) | * 3CD: Lap Counter (1-5, set to 05 to instantly win a race) | ||
* 3D2: | * 3CE: Debris Sprite | ||
* | * 3CF: Debris X-Coordinate | ||
* | * 3D0: Debris Y-Coordinate | ||
* 3D1: Debris Animation Timer | |||
* 3D2: Track Position | |||
* 3D3: Track Data Offset | |||
* 3D4: Airborne | |||
** Set when off the ground, prevents acceleration | |||
===Player 4:=== | ===Player 4:=== | ||
* 3D5-3D8: Name | |||
* 3D9: Negative Cash Balance | |||
** Drops to 0xFF if player has insufficient funds | |||
* 3DA-3E1: Money (8 digits, left digit first) | * 3DA-3E1: Money (8 digits, left digit first) | ||
* 3E2: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | * 3E2: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland) | ||
Line 73: | Line 211: | ||
* 3E6: Acceleration (0-6) | * 3E6: Acceleration (0-6) | ||
* 3E7: Top Speed (0-6) | * 3E7: Top Speed (0-6) | ||
* 3E8- | * 3E8-40F: Track Records | ||
* 411: Cash Picked Up | |||
* 412: Car ID | |||
* 413: Gamepad Pointer | |||
** Refer to variables 026-02D | |||
* 414: Lap Counter (1-5, set to 05 to instantly win a race) | * 414: Lap Counter (1-5, set to 05 to instantly win a race) | ||
* 419: | * 415: Debris Sprite | ||
* | * 416: Debris X-Coordinate | ||
* | * 417: Debris Y-Coordinate | ||
* 418: Debris Animation Timer | |||
* 419: Track Position | |||
* 41A: Track Data Offset | |||
* 41B: Airborne | |||
** Set when off the ground, prevents acceleration | |||
{{Internal Data|game=Ivan "Ironman" Stewart's Super Off-Road}} | {{Internal Data|game=Ivan "Ironman" Stewart's Super Off-Road}} |
Revision as of 00:23, 20 November 2024
The following article is a RAM map for Ivan "Ironman" Stewart's Super Off Road.
Gamepad/Controller Variables
Gamepad buttons are automatically set for CPU racers
- 026: Gamepad 1 Buttons
- 027: Gamepad 1 Button Pressed
- 028: Gamepad 2 Buttons
- 029: Gamepad 2 Button Pressed
- 02A: Gamepad 3 Buttons
- 02B: Gamepad 3 Button Pressed
- 02C: Gamepad 4 Buttons
- 02D: Gamepad 4 Button Pressed
The following temporary variables are used to calculate "pressed" buttons
- 02E: Gamepad 1 Previous Buttons
- 02F: Gamepad 2 Previous Buttons
- 030: Gamepad 3 Previous Buttons
- 031: Gamepad 4 Previous Buttons
General Variables
- 024-025: Randomizer
- 033: Current Car (temporary)
- 04C-04D: Previous X-Coordinate (mid-race) / Racer Position A (post-race)
- 04E-04F: Previous Y-Coordinate (mid-race) / Racer Position B (post-race)
- 05A: First Place Car (post-race)
- 05B: Second Place Car (post-race)
- 05C: Third Place Car (post-race)
- 05D: Last Place Car (post-race)
- 05E-05F: Previous Z-Coordinate (mid-race)
- 060-061: Player Struct Address
- 723: Current track (Determined by Race Number 7E0 and table FB69)
- 00 = Sidewinder
- 01 = Huevos Grande
- 02 = Big Dukes
- 03 = Hurricane Gulch
- 04 = Wipeout
- 05 = Fandango
- 06 = Blaster
- 07 = Cliffhanger
- 08-0F = Reversed versions of 00-07.* 72D: Number of Players (1-4), set to 0 during the demo race
- 725: Current Player (temporary)
- Parent variable of $033
- 727: Current Car Tire Traction
- 728: Flagger Timer
- 729: Bonus Item Value
- Determines sprite, palette, and bonus value
- 72A: Bonus Item X
- 72B: Bonus Item Y
- 72C: Bonus Item Timer
- 736: Frame Counter
- 737-73B: Stopwatch
- 746: HUD Draw Timing
- Updates laps & nitros if less than 4, otherwise updates every other digit in stopwatch (max 0x06)
- 74E-751: Prize Amount (post-race)
- 754: Current Car Airborne Value
- 7AC: Continue Allowed
- 7AD-7AE: CPU Reverse Delay
- Starts at 0x12C each race, ignores 72E-735 while counting down
- 7AF: Race Number
- Determines CPU difficulty, etc.
- 7B0: Race Checkpoint Number (0x0E = championship start, 0x63 = championship/game over)
- 7CA: Name Entry Input Delay
- Ignores gamepad input on Name Entry screen every 0x0A frames
- 7DE: Cash Bonus Value
- From 0x01 to 0x05, but 0x06 also works
- 7DF: Nitro Bonus Value
- From 0x07 to 0x0F
- 7E0: Race Track Pointer
- Counts up to 0x2A then loops back to 0x1B, determines race track
- 7E2: Game Difficulty/CPU Minimum Speed (20-DC)
- Initial Value is 0x20 and increases by 2 on race number 2, 4, 6, 8, and 10+
- CPU speed will always be between 0x30 and 0xB0, however
Player Arrays
Note: These are all in sets of 4, in order of player
- 05A-05D: Y-Coordinate Placeholder (mid-race)
- Cars are moved to top of screen during collision checks, this saves their y-coordinates
- 083-086: X-Coordinate
- 087-08A: Subpixel X-Coordinate
- 08B-08E: Y-Coordinate
- 08F-092: Subpixel Y-Coordinate
- 093-096: Driving Direction
- Between 0x00 (left) and 0xBF
- 097-09A: Speed
- 09B-09E: Z-Coordinate / Height
- 09F-0A2: Fractional Z-Coordinate / Height
- 0A3-0A6: Airspeed
- 0A7-0AA: Fractional Airspeed
- 0AB-0AE: Gravity
- Increases while in air, then added to Airspeed
- 0AF-0B2: Shadow Z-Coordinate / Height
- 0B3-0B6: Hangtime
- Set to 1/64th car Speed upon leaving the ground
- 0B7-0BA: Steering Direction
- Between 0x00 (left) and 0xBF
- Every 8 angles changes sprite, allowing for 24 sprites
- 0BB-0BE: Pitch
- From 0x01 (slightly angled) to 0x07 (steep angle), or 0x08 (level)
- 0BF-0C2: Sprite Address (low-byte)
- 0C3-0C6: Sprite Address (high-byte)
- 0C7-0CA: Nitro State
- 0CB-0CE: Nitro Timer
- 0CF-0D2: Nitro Sprite (low-byte)
- 0D3-0D6: Nitro Sprite (high-byte)
- 0D7-0DA: Turning Direction
- 0DB-0DE: Centrifuge
- Resistance to turning, based on Speed
- 72E-731: Reverse Point X-Coordinate
- 732-735: Reverse Point Y-Coordinate
- These may have been a used at some point to prevent CPU cars getting stuck
- 74A-74D: Calculated Pitch (mid-race)
- 74E-751: Calculated Z-Coordinate (mid-race)
- 755-758: Previous Pitch (nose/tail angle)
- 0x01 = slight pitch, 0x07 = steep pitch, 0x08 = level
- 75D-760: Lives
- 7A8-7AB: Eliminated Flag
- 00 = live, FF = eliminated, CPU plays for this player
- Note: If all players are eliminated, or there are 0 players in the game, the game crashes at the menu between races.
Player Structs
Player structure located around address $300, has 0x47 bytes per player.
Player 1:
- 300-303: Name
- 304: Negative Cash Balance
- Drops to 0xFF if player has insufficient funds
- 305-30C: Money (8 digits, left digit first)
- 30D: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland)
- 30E: Shocks (0-6)
- 30F: Tires (0-6)
- 310: Nitros (0-99)
- 311: Acceleration (0-6)
- 312: Top Speed (0-6)
- 313-33A: Track Records
- 33C: Cash Picked Up
- 33D: Car ID
- 33E: Gamepad Pointer
- Refer to variables 026-02D
- 33F: Lap Counter (1-5, set to 05 to instantly win a race)
- 340: Debris Sprite
- 341: Debris X-Coordinate
- 342: Debris Y-Coordinate
- 343: Debris Animation Timer
- 344: Track Position
- 345: Track Data Offset
- 346: Airborne
- Set when off the ground, prevents acceleration
Player 2:
- 347-34A: Name
- 34B: Negative Cash Balance
- Drops to 0xFF if player has insufficient funds
- 34C-353: Money (8 digits, left digit first)
- 354: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland)
- 355: Shocks (0-6)
- 356: Tires (0-6)
- 357: Nitros (0-99)
- 358: Acceleration (0-6)
- 359: Top Speed (0-6)
- 35A-381: Track Records
- 383: Cash Picked Up
- 384: Car ID
- 385: Gamepad Pointer
- Refer to variables 026-02D
- 386: Lap Counter (1-5, set to 05 to instantly win a race)
- 387: Debris Sprite
- 388: Debris X-Coordinate
- 389: Debris Y-Coordinate
- 38A: Debris Animation Timer
- 38B: Track Position
- 38C: Track Data Offset
- 38D: Airborne
- Set when off the ground, prevents acceleration
Player 3:
- 38E-391: Name
- 392: Negative Cash Balance
- Drops to 0xFF if player has insufficient funds
- 393-39A: Money (8 digits, left digit first)
- 39B: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland)
- 39C: Shocks (0-6)
- 39D: Tires (0-6)
- 39E: Nitros (0-99)
- 39F: Acceleration (0-6)
- 3A0: Top Speed (0-6)
- 3A1-3C8: Track Records
- 3CA: Cash Picked Up
- 3CB: Car ID
- 3CC: Gamepad Pointer
- Refer to variables 026-02D
- 3CD: Lap Counter (1-5, set to 05 to instantly win a race)
- 3CE: Debris Sprite
- 3CF: Debris X-Coordinate
- 3D0: Debris Y-Coordinate
- 3D1: Debris Animation Timer
- 3D2: Track Position
- 3D3: Track Data Offset
- 3D4: Airborne
- Set when off the ground, prevents acceleration
Player 4:
- 3D5-3D8: Name
- 3D9: Negative Cash Balance
- Drops to 0xFF if player has insufficient funds
- 3DA-3E1: Money (8 digits, left digit first)
- 3E2: Country (00 = USA, 01 = Italy, 02 = Germany, 03 = Britain, 04 = France, 05 = Japan, 06 = Canada, 07 = Austraila, 08 = Leland)
- 3E3: Shocks (0-6)
- 3E4: Tires (0-6)
- 3E5: Nitros (0-99)
- 3E6: Acceleration (0-6)
- 3E7: Top Speed (0-6)
- 3E8-40F: Track Records
- 411: Cash Picked Up
- 412: Car ID
- 413: Gamepad Pointer
- Refer to variables 026-02D
- 414: Lap Counter (1-5, set to 05 to instantly win a race)
- 415: Debris Sprite
- 416: Debris X-Coordinate
- 417: Debris Y-Coordinate
- 418: Debris Animation Timer
- 419: Track Position
- 41A: Track Data Offset
- 41B: Airborne
- Set when off the ground, prevents acceleration
Internal Data for Ivan "Ironman" Stewart's Super Off-Road
| |
---|---|