SMK RAM Map. Made by MrL314 and Catador, parts of data based on contributions from Roy and Datacrystal Descriptions with a * are theoretical descriptions, and thus will need verification Address Size Description $7E:0010 2 Bytes [TEMP] VRAM address $7E:0012 2 Bytes [TEMP] DMA Source(DP) For Raw Sprite Data $7E:0016 1 Byte [TEMP] DMA Source(Bank) For Raw Sprite Data $7E:0017 1 Byte [TEMP] VRAM Word Transfer Size $7E:0018 2 Bytes [TEMP] Sprite Enlarge Ratio $7E:001A 2 Bytes [TEMP] Sprite Set $7E:001C 2 Bytes [TEMP] Sprite X Position $7E:001E 2 Bytes [TEMP] Sprite Y Position $7E:0020 2 Bytes Player 1 joypad current frame $7E:0022 2 Bytes Player 2 joypad current frame $7E:0024 2 Bytes Player 1 joypad previous frame $7E:0026 2 Bytes Player 2 joypad previous frame $7E:0028 2 Bytes Player 1 joypad new inputs (not in frame before but in current frame) $7E:002A 2 Bytes Player 2 joypad new inputs (not in frame before but in current frame) $7E:002C 2 Bytes Game Type (0: GP, 2: MR, 2: TT, 3: BT) $7E:002E 2 Bytes Display Mode (0: Both Screens Active, 2: Top Screen Active Only, 4: Bottom Screen Active Only) $7E:0030 2 Bytes Race cc (00: 50cc, 02: 100cc, 04: 150cc) $7E:0032 2 Bytes Next Gamemode $7E:0034 2 Bytes Global Clock (Not stopped on "Pause") $7E:0036 2 Bytes Gamemode $7E:0038 2 Bytes Global Race Clock (Stopped on "Pause") $7E:003A 2 Bytes ????? Some mode... (0:Load GP, 2: Load TT/BT, 4: Countdown, 6: Active moving, A: Zoom beginning GP) $7E:003C 2 Bytes OAM line pointer $7E:0040 1 Byte APUIO0 Mirror ( Main interface for sound effects ) $7E:0041 1 Byte APUIO1 Mirror $7E:0042 1 Byte APUIO2 Mirror ( In Race, directly related to P1 engine pitch ) $7E:0043 1 Byte APUIO3 Mirror ( In Race, directly related to P2 engine pitch ) $7E:0044 2 Bytes Screen Transition Bool (0x0000: false, 0xffff: in transition) $7E:0048 2 Bytes *** 8085e3, =0x8f00 $7E:004A 2 Bytes VRAM Instruction Table Index ============================================================== IN RACE $7E:004C 2 Bytes Player1 Screen Layer 1 X Position $7E:004E 2 Bytes Player2 Screen Layer 1 X Position $7E:0050 2 Bytes *** Map Screen Layer 1 X Position? (Copy of Lower-screen) $7E:0052 2 Bytes Player1 Screen Layer 1 Y Position $7E:0054 2 Bytes Player2 Screen Layer 1 Y Position $7E:0056 2 Bytes *** Map Screen Layer 1 Y Position? (Copy of Lower-screen) $7E:0058 2 Bytes Player1 Screen Mode 7 Ground X Position? $7E:005A 2 Bytes Player2 Screen Mode 7 Ground X Position? $7E:005C 2 Bytes *** Map Screen Mode 7 Ground X Position? (Copy of Lower-screen) $7E:005E 2 Bytes Player1 Screen Mode 7 Ground Y Position? $7E:0060 2 Bytes Player2 Screen Mode 7 Ground Y Position? $7E:0062 2 Bytes *** Map Screen Mode 7 Ground Y Position? (Copy of Lower-screen) $7E:0064 2 Bytes Player1 screen Sub-cardinal Azimuth angle $7E:0066 2 Bytes Player2 screen Sub-cardinal Azimuth angle $7E:0068 2 Bytes ***ORA with Current Joypad??? $7E:006A 2 Bytes *Player1 Screen Shorthand cardinal direction offset thingie $7E:006C 2 Bytes *Player2 Screen Shorthand cardinal direction offset thingie $7E:006E 2 Bytes **** Map Screen Shorthand cardinal direction offset thingie (Copy of Lower-screen) $7E:0070 2 Bytes Player1 Screen Mapped Azimuth Angle $7E:0072 2 Bytes Player2 Screen Mapped Azimuth Angle $7E:0074 2 Bytes *** Map Screen Mapped Azimuth Angle (Copy of Lower-screen) $7E:0076 2 Bytes Player1 Screen Back Background Vertical Offset $7E:0078 2 Bytes Player2 Screen Back Background Vertical Offset $7E:007A 2 Bytes *** Map Screen Back Background Vertical Offset (Copy of Lower-screen) $7E:007C 2 Bytes Top Screen distance from viewpoint to basepoint [DSP-1 Projection Command Data] $7E:007E 2 Bytes Bottom Screen distance from viewpoint to basepoint [DSP-1 Projection Command Data] $7E:0080 2 Bytes Top Screen Zenith angle [DSP-1 Projection Command Data] $7E:0082 2 Bytes Bottom Screen Zenith angle [DSP-1 Projection Command Data] $7E:0084 2 Bytes Top Screen distance from viewpoint to screen [DSP-1 Projection Command Data] $7E:0086 2 Bytes Bottom Screen distance from viewpoint to screen [DSP-1 Projection Command Data] $7E:0088 2 Bytes Top Screen Global X Position [DSP-1 Projection Command Data] $7E:008A 2 Bytes Bottom Screen Global X Position [DSP-1 Projection Command Data] $7E:008C 2 Bytes Top Screen Global Y Position [DSP-1 Projection Command Data] $7E:008E 2 Bytes Bottom Screen Global Y Position [DSP-1 Projection Command Data] $7E:0094 2 Bytes Top Screen Azimuth angle [DSP-1 Projection Command Data] $7E:0096 2 Bytes Bottom Screen Azimuth angle [DSP-1 Projection Command Data] $7E:0098 2 Bytes Top Screen Raster Number of Imaginary Center $7E:009A 2 Bytes Bottom Screen Raster Number of Imaginary Center???? $7E:009C 2 Bytes $7E:0098 + Raster Number current scanline number?? $7E:009E 2 Bytes $7E:009A + Raster Number current scanline number?? $7E:00A0 2 Bytes Top Screen Raster Number of Horizon? $7E:00A2 2 Bytes Bottom Screen Raster Number of Horizon? ==================================================================================== ==================================================================================== START MENU $7E:0064 2 Bytes BG2 Horizontal Offset $7E:007B 1 Byte "Erase" Menu Cursor Position $7E:0080 1 Byte Menu Number [0: psel, 1: psel, 2: 2ptype, 3:1ptype, 4:cc, 5: okay?, 6:okay?] $7E:0084 2 Bytes Menu Option (High byte: --TB M51N, ) ==================================================================================== $7E:00A4 2 Bytes Top Screen Camera parameters (00: Top Screen Azimuth = Racer1.azimuth, Top Screen XY = Racer1.XY?? (Racer Mode) 02: Negative Bottom Screen Azimuth (?? and BG2?), (Camera Mode) 04: Negative Bottom Screen Azimuth, Camera when X pressed? 06: Update Global X,Y but zoom out and do not update with Azimuth (Map mode) ************ look into later $7E:00A6 2 Bytes Bottom Screen version of A4 $7E:00A8 2 Bytes *Top screen Player offset (for display routine?) $7E:00AA 2 Bytes *Bottom screen Player offset (for display routine?) $7E:00AC 1 Byte *Top screen ??? $7E:00AD 1 Byte *Top screen Camera Control Bits (abc0 0000 - a: update position, b: update angle, c: spin camera) $7E:00AE 1 Byte *Bottom screen ??? $7E:00AF 1 Byte *Bottom screen Camera Control Bits (abc0 0000 - a: update position, b: update angle, c: spin camera) $7E:00B0 2 Bytes Offset of Object whose sprite is furthest up on the top screen $7E:00B2 2 Bytes Offset of Object whose sprite is furthest down on the top screen $7E:00B4 2 Bytes Offset of Current Object (Read by Object routines. Changing is futile) $7E:00B6 2 Bytes Exact Game Type [00: none, 02: 1P TS GP, 04: 1P BS GP, 06: 2P GP, 08: 1P TS TT, 0A: 1P BS TT, 0C: 2P BT] $7E:00B8 2 Bytes Another Object Offset? Player Offset? $7E:00BC 2 Bytes Offset of Racer with lowest global Y coordinate (Nearest top of map) $7E:00BE 2 Bytes Offset of Racer with highest global Y coordinate (Nearest bottom of map) $7E:00C8 2 Bytes **** related to 2e, actual value is $818E13[$2E] (bit4000 maybe sprite enable control?) $7E:00CA 2 Bytes **** related to 2e, actual value is $818E1F[$2E] $7E:00CE 2 Bytes OAM Bank Offset $7E:00D2 2 Bytes Grow/Shrink/Lightning Sound Control $7E:00D4 2 Bytes Top screen Mode 7 Settings $7E:00D6 2 Bytes Bottom Screen Mode 7 Settings $7E:00DC 2 Bytes *Top screen Azimuth Offset angle [0x00C0: during race] $7E:00DE 2 Bytes *Bottom screen Azimuth Offset angle $7E:0100 2 Bytes Timer "Hexi"-seconds $7E:0102 2 Bytes Timer Seconds $7E:0104 2 Bytes Timer Minutes $7E:0106 2 Bytes Gamemode Backup $7E:0108 1 Byte Top Screen Window Mask Settings for OBJ And Color Window $7E:0109 1 Byte Bottom Screen Window Mask Settings for OBJ And Color Window $7E:010A 2 Bytes ???? Racer.d4? $7E:010C 18 Bytes Driver Rank Order Table (First entry blank for logic reasons) $7E:0110 2 Bytes $7E:0120 2 Bytes In Loading-Screen Bool (0000:yes, ffff:no) $7E:0122 2 Bytes Current Character Number??? $7E:0124 2 Bytes Track number $7E:0126 2 Bytes Theme number (01: Ghost Valley, 02: Mario Circuit, 03: Donut Plains, 04: Choco Island, 05: Vanilla Lake, 06: Koopa Beach, 07: Bowser Castle/Rainbow Road, 08:VL Battle (B3)????, 0A: KB Battle (B2)???) $7E:0128 2 Bytes "Race Qualified" Song Timer $7E:012E 2 Bytes Finished Racer Rank * 2 (Read-only) $7E:0130 16 Bytes Finished Racers Table (values are the character number) $7E:0142 2 Bytes Countdown Stall Timer $7E:0144 2 Bytes Number of racers finished * 2 $7E:0146 2 Bytes DeltaY Offset/Velocity for GlobalY Position $7E:0148 1 Byte? Checkpoints in current race $7E:014A 2 Bytes Y position kart must pass through in order to count a lap (Read by 808994 Subroutine) $7E:014C 2 Bytes Number of Laps in current race (+0x80) $7E:014E 1 Byte Top Screen Window Mask Designation for Main Screen $7E:014F 1 Byte Bottom Screen Window Mask Designation for Main Screen $7E:0150 2 Bytes Grand Prix Cup Number $7E:0152 2 Bytes Race Number $7E:0154 2 Bytes Player 1 Lives (GP) (+1) $7E:0156 2 Bytes Player 2 Lives (GP) (+1) $7E:0158 2 Bytes ???? 4 btl? (0A: mr or tt, 02: race results race) $7E:015E 2 Bytes ***8085DD, =0x0060, 8084D8, =0x80, 81f228, =x20 $7E:0160 2 Bytes Screen Brightness $7E:0162 2 Bytes ?????? Some bit flags?? $7E:0164 2 Bytes Current Screen Offset (or toggle screen?) $7E:016A 1 Byte Top Screen Color Math Designation $7E:016B 1 Byte Bottom Screen Color Math Designation $7E:016C 1 Byte Top Screen Fixed Color Data (RED?) $7E:016D 1 Byte Bottom Screen Fixed Color Data (RED?) $7E:016E 1 Byte Top Screen Fixed Color Data? (GREEN?) $7E:016F 1 Byte Bottom Screen Fixed Color Data (GREEN?) $7E:0170 1 Byte Top Screen Fixed Color Data? (BLUE?) $7E:0171 1 Byte Bottom Screen Fixed Color Data (BLUE?) $7E:0172 2 Bytes ?????? $7E:0174 2 Bytes Copy of DisplayMode $7E:017A 1 Bytes Top Screen Course Palette switch $7E:017B 1 Bytes Bottom Screen Course Palette switch $7E:0200 512 Bytes OAM Low Table, before blank $7E:0400 32 Bytes OAM High Table, before blank $7E:0420 512 Bytes OAM Low Table, after blank $7E:0620 32 Bytes OAM High Table, after blank $7E:0640 80 Bytes? Mode7 Skew/Strech/Shear Parameters $7E:0690 64 Bytes Speed Reduction Factor Table $7E:06D0 64 Bytes Angle Correction Factor Table $7E:0710 16*2 Bytes Acceleration Table for Player 1 $7E:0730 32 Bytes Off-Road Speed Table for Player 1 $7E:0750 3*8 Bytes Character Handling Table for Player 1 $7E:0768 16*2 Bytes Acceleration Table for Player 2 $7E:0788 32 Bytes Off-Road Speed Table for Player 2 $7E:07A8 3*8 Bytes Character Handling Table for Player 2 $7E:0800 256? Bytes Checkpoint Speed and Angle Table (Low: Speed, High: Angle) $7E:0900 256? Bytes Checkpoint Lakitu Drop X-Coordinate Table $7E:0A00 256? Bytes Checkpoint Lakitu Drop Y-Coordinate Table $7E:0B00 256 Bytes Tile surface type table $7E:0C00 128 Bytes Top Line Sprite IDs (In race) (Timer, Item, etc.) $7E:0C80 128 Bytes 2nd Line Sprite IDs (In race) (Timer, Item, etc.) $7E:0D00 2 Bytes Top Line Sprite Band read Offset $7E:0D02 2 Bytes 2nd Line Sprite Band Read Offset $7E:0D28 2 Bytes Theme Number Word Offset $7E:0D2A 2 Bytes ?????? (Map Remaining After Coin??????) $7E:0D60 2 Bytes Pointer to Item1 $7E:0D62 2 Bytes Pointer to Item2 $7E:0D6E 2 Bytes Color of Rank number $7E:0D70 1 Byte Player 1 Item Box Sprite Offset $7E:0D71 1 Byte Player 1 Item Box State [00: no item, 80: flashing (obtained item), 90: Boo Theft, A0: rolling, C0: ready to use] $7E:0D72 1 Byte Player 2 Item Box Sprite Offset $7E:0D73 1 Byte Player 2 Item Box State [00: no item, 80: flashing (obtained item), 90: Boo Theft, A0: rolling, C0: ready to use] $7E:0D74 2 Bytes Pointer to Player 1's displayed item during rolling $7E:0D74 2 Bytes Pointer to Player 2's displayed item during rolling $7E:0D78 2 Bytes Player 1 Item Box "Rolling Timer" $7E:0D7A 2 Bytes Player 2 Item Box "Rolling Timer" $7E:0D7C 2 Bytes Player 1 Predetermined Item ID $7E:0D7E 2 Bytes Player 2 Predetermined Item ID $7E:0DD0 2 Bytes **Animation Timing Table for Background $7E:0DD2 2 Bytes **related to animation table $7E:0DFA 2 Bytes Item Allocation Table $7E:0E00 2 Bytes Player 1 Coins $7E:0E02 2 Bytes Player 2 Coins $7E:0E04 2 Bytes Player 1 ??? $7E:0E06 2 Bytes Player 2 ??? $7E:0E0C 2 Bytes APU Instruction Table Offset $7E:0E0E 2 Bytes "Play Last Lap Jingle" Bool (<=0: False, >0: True) $7E:0E10 2 Bytes "Play Starman Theme" Bool (FFFF=False, 1000=True) $7E:0E12 2 Bytes "Last Lap Jingle" Timer $7E:0E18 2 Bytes APU Instruction Table $7E:0E20 12 Bytes ??????? $7E:0E30 2 Bytes ***Adjusted theme number?? $7E:0E32 2 Bytes SFX Disable (0xffff: disable, 0x0000: enable) $7E:0E34 2 Bytes Demo Number $7E:0E38 2 Bytes =0x04B0 (8084ff) $7E:0E3A 2 Bytes DisplayMode Backup $7E:0E3C 2 Bytes GameType Backup $7E:0E3E 2 Bytes Demo cc $7E:0E40 2 Bytes Demo Player1 character_num $7E:0E42 2 Bytes Demo Player2 character_num $7E:0E44 2 Bytes Demo GP Cup Number TEMP? $7E:0E46 $7E:0E48 1 Byte 7C is one screen showing, 7D is two screens? $7E:0E49 $7E:0E50 2 Bytes ***Bool? Sprites loaded to VRAM? +808456 $7E:0E52 2 Bytes ***???? used to set Race and GP Number 809CAA? $7E:0E68 2 Bytes Looks like a debug value, most routines using this end up crashing $7E:0E6A 2 Bytes Index of SFX Instruction Tables $7E:0E6C 8 Bytes SFX Instruction Table $7E:0E74 8 Bytes ???? Table??? $7E:0E8E 2 Bytes Number of Finished Racers (x2) $7E:0E90 16 Bytes Race Finish Order (Pointers to Struct) $7E:0EA0 120? Bytes VRAM DMA Queue (Each entry is VVVVDDDDDDSS, V: VRAM Address (Word), D: DMA Source (Long), S: wordsize to transfer (byte)) $7E:0F2C 36 Bytes Table of Lap "Finishing Times" for Player 1 (0F32?) $7E:0F4A 36 Bytes Table of Lap "Finishing Times" for Player 2 (0F50?) $7E:0F70 16 Bytes Ordered list of Racers based on GP Points $7E:0F94 2 Bytes Race Finish Camera Change Timer $7E:0F98 2 Bytes Obstacle (Top Screen) Routine Table? $7E:0F9A 2 Bytes Obstacle (Bottom Screen) Routine Table? $7E:0FA0 2 Bytes ??? pointer to some wack table $7E:0FA2 2 Bytes ??????? decrements on race startup $7E:0FA8 2 Bytes *** Display Routine Stall??? $7E:0FAA 3 Bytes Pointer to Left-Audio SFX Routine $7E:0FAD 3 Bytes Pointer to Right-Audio SFX Routine $7E:0FB4 2 Bytes Copy of Theme Number (=0 if track is RR) $7E:0FBA 2 Bytes Enlarge ratio limiter????? $7E:0FD8 2 Bytes Palette? $7E:0FDC 3 Bytes Mono-Audio SFX Routine Pointer -$7E:1000 256 Bytes Racer0 Struct -$7E:1100 256 Bytes Racer1 Struct -$7E:1200 256 Bytes Racer2 Struct -$7E:1300 256 Bytes Racer3 Struct -$7E:1400 256 Bytes Racer4 Struct -$7E:1500 256 Bytes Racer5 Struct -$7E:1600 256 Bytes Racer6 Struct -$7E:1700 256 Bytes Racer7 Struct --------Racer Struct Format (WIP)------------------------------------------------------ $7E:1x00 1 Byte Object Close Behind Boolean [00: True, B0: False] $7E:1x01 1 Byte Closest driver behind (given as offset for data table) $7E:1x02 1 Byte Object Close Ahead Boolean [00: True, B0: False] $7E:1x03 1 Byte Closest driver in front (given as offset for data table) $7E:1x06 1 Byte Top Screen Enlarge ratio for sprite given as result from DSP-1 Command (look up command name), also possily consider as sprite size $7E:1x08 2 Bytes $7E:1x0E 1 Byte Bottom Screen Enlarge ratio for sprite given as result from DSP-1 Command (look up command name), also possily consider as sprite size $7E:1x10 2 Bytes Racer Status Flags (currently investigating) $7E:1x12 2 Bytes Character Number [00: Mario, 02: Luigi, 04: Bowser, 06: Peach, 08: DK, 0A: Koopa, 0C: Toad 0E: Yoshi] $7E:1x14 1 Byte Character Sprite $7E:1x15 1 Byte Character Palette [01: Bowser/Yoshi, 03: Mario/Toad, 05: Luigi/Koopa, 07: DK/Peach] $7E:1x16 2 Bytes Global X Subpixel $7E:1x18 2 Bytes Global X Position (NOTE: tileX = (this-1)/16) $7E:1x1A 2 Bytes Global Y Subpixel $7E:1x1C 2 Bytes Global Y Position (NOTE: tileY = (this-1)/16) $7E:1x1E 2 Bytes Global Z Subpixel $7E:1x20 2 Bytes Global Z Position $7E:1x22 2 Bytes X Velocity $7E:1x24 2 Bytes Y Velocity $7E:1x26 2 Bytes Z Velocity $7E:1028 2 Bytes "On Road" Bool [10: Off road, 20: On road] $7E:1x2A 2 Bytes Heading Angle $7E:1x2C 2 Bytes Top Screen Sprite X Position $7E:1x2E 2 Bytes Top Screen Sprite Y Position $7E:1x30 2 Bytes Top Screen Sprite Number $7E:1x32 2 Bytes Bottom Screen Sprite X Position $7E:1x34 2 Bytes Bottom Screen Sprite Y Position $7E:1x36 2 Bytes Bottom Screen Sprite Number $7E:1x38 2 Bytes Top Screen Sprite Temp-Y Position (Used for absolutes before calculations) $7E:1x3A 2 Bytes Bottom Screen Sprite Temp-Y Position (Used for absolutes before calculations) $7E:1x3C 2 Bytes Top Screen Sprite Temp-X Position (Used for absolutes before calculations) $7E:1x3E 2 Bytes Bottom Screen Sprite Temp-X Position (Used for absolutes before calculations) $7E:1x40 1 Byte Current Rank (Given as (Rank-1)*2) $7E:1x42 2 Bytes Some more flags (investigating) $7E:1x44 2 Bytes Global Temp-X Position $7E:1x46 2 Bytes Global Temp-Y Position $7E:1x4E 1 Byte Speed Flagset $7E:1x52 2 Bytes Collision Timer $7E:1x56 2 Bytes Wall Collision Direction [0: west, 2: east, 4: north, 6: south] $7E:1x58 2 Bytes Current Tile Index $7E:1x5C 2 Bytes Right-bounce Timer $7E:1x5E 2 Bytes Left-bounce Timer $7E:1x61 1 Byte Mole on kart flag $7E:1x62 2 Bytes Previous Global X Velocity $7E:1x64 2 Bytes Previous Global Y Velocity $7E:1x66 2 Bytes Previous Global Z Velocity $7E:1x68 1 Byte Current Tile Type $7E:1x6A 2 Bytes Item User Offset (Only applicable to items) $7E:1x6C 1 Byte Delay timer after item use before item is activated (Only applicable to items) $7E:1x6D 1 Byte *play "Victory" animation ($00 = Dont play, $80 = play) $7E:1x6E 2 Bytes Routine pointer?????? (Related to item use) $7E:1x70 2 Bytes Field Item Type (Only applicable to items) $7E:1x74 2 Bytes Item Top Screen Left Half Sprite Size Offset (Smaller number means bigger, 0x14=don't display) $7E:1x76 2 Bytes Item Bottom Screen Left Half Sprite Size Offset $7E:1x78 2 Bytes Item Top Screen Right Half Sprite Size Offset $7E:1x7A 2 Bytes Item Bottom Screen Right Half Sprite Size Offset $7E:1x7C 2 Bytes Offset for Left Half of Sprite (Only applicable to items) $7E:1x7E 2 Bytes Offset for Right Half of Sprite (Only applicable to items) $7E:1x82 2 Bytes Invulnerability Timer $7E:1x84 2 Bytes Mini-Kart Timer $7E:1x86 2 Bytes Star Timer $7E:1x88 2 Bytes Drive-By Head Turn Timer [High Byte indicates direction. A0: right, C0: left] $7E:1x90 2 Bytes Distance between closest object behind racer and Screen $7E:1x92 2 Bytes Distance between closest object ahead of racer and Screen $7E:1x94 2 Bytes Offset of Object Behind of Racer $7E:1x96 2 Bytes Offset of Object Ahead of Racer $7E:1x98 2 Bytes Camera Global X $7E:1x9A 2 Bytes Camera Global Y $7E:1x9C 2 Bytes Camera Azimuth Angle $7E:1x9E 2 Bytes Angular Velocity $7E:1xA0 1 Byte Kart Status [00: On ground, 02: Jump/Hop/Ramp, 04: Fallen off, 06: In Lava, 08: In water, 0A: currently unknown, 0C: Lakitu taking coins from driver] $7E:1xA2 2 Bytes Momentum Angle $7E:1xA4 2 Bytes Absolute Racer Angle $7E:1xA6 1 Byte *Kart Skid Flag set ($00 = Normal Skid/Using star, $02 = Normal Skid/Using Star, $0C = Using star, $0E = Skidded Right, $10 = Skidded Left, $12 = in mini-boost/hit something, $1C = at mini-boost peak/hit something) $7E:1xA8 2 Bytes Screen-relative Momentum Direction $7E:1xAA 2 Bytes Screen-relative Kart Angle $7E:1xAC 1 Byte Speed Change Routine Offset $7E:1xAE 1 Byte Surface Type ($10: ramp, $12: Choco Island mini ramp?, $14: unused powerup square, $16: speed boost, $18: oil slick, $1A: Coin, $1C: Choco Island ramp, $20: off edge, $22: deep water, $40: mario circuit road, ghost valley road, used powerup square, rainbow road, $42: ghost valley transition tiles, $44: bowser castle road, $46: donut plains track, $4A: koopa beach sand, $4C: choco island track, $4E: ghost valley rough bit, bowser castle rough bit, ice, $50: choco island bridges, $52: choco island slightly rough bit of track, $54: mario circuit off road, $56: choco island off road, $58: snow, $5A: koopa beach bushes, donut plains grass, $5C: shallow-water, $5E: mud puddle, 80: wall) $7E:1xB2 2 Bytes Angular Velocity $7E:1xB4 2 Bytes Base Maximum Speed $7E:1xB6 2 Bytes Top Screen Sprite VRAM Address $7E:1xB8 2 Bytes Bottom Screen Sprite VRAM Address $7E:1xBA 2 Bytes Top Screen Previous Sprite Number $7E:1xBC 2 Bytes Bottom Screen Previous Sprite Number $7E:1xC0 1 Byte Current Checkpoint Number $7E:1xC1 1 Byte Current Lap (Given as Lap+128) $7E:1xC2 2 Bytes Engine Pitch $7E:1xC4 2 Bytes Controller Flagset $7E:1xCA 2 Bytes Boost Counter $7E:1xCC 2 Bytes Current Checkpoint X-Coordinate (Also used as Lakitu "Drop Coordinate" X) $7E:1xCE 2 Bytes Current Checkpoint Y-Coordinate (Also used as Lakitu "Drop Coordinate" Y) $7E:1xD0 2 Bytes Flowmap direction, aka "Desired" angle. Points directly to Checkpoint Coordinates $7E:1xD2 2 Bytes Screen Number Being Used $7E:1xD6 2 Bytes Max Speed $7E:1xDC 1 Byte Current Checkpoint Backup $7E:1xDD 1 Byte Current Lap Backup $7E:1xDE 1 Byte *"Turn Camera to face player?" (Only activates when race finishes) $7E:1xE0 2 Bytes "Item to use" flags [bit8000: Mushroom, bit4000: Feather, bit2000: Starman, bit1000: Banana, bit0800: Green Shell, bit0400: Red Shell, bit0200: Ghost, bit0100: Coins, bit0040: Lightning] $7E:1xE2 1 Byte Spinout Flagset $7E:1xE3 1 Byte *Hopping "In Air" Flag (Possibly another flag set) $7E:1xE6 1 Byte Current Rank Backup $7E:1xEA 2 Bytes Absolute Speed $7E:1xEE 2 Bytes Speed Reduction Factor $7E:1xF0 2 Bytes Grand Prix Points (Possibly Battle Points?) $7E:1xF2 6 Bytes Race Finish Time (in Decimal) $7E:1xF9 1 Byte Maximum Lap Number Reached (Lap + 7E) $7E:1xFA 1 Byte Target Facing (Calculated by arctan) $7E:1xFC 1 Byte Mini-Turbo Timer ------------------------------------------------------------------------------------- $7E:190E 2 Bytes Cup Won Bool () $7E:1DDC 2 Bytes top screen bool??? $7E:1DDE 2 Bytes bottom screen bool??? $7E:1DE0 2 Bytes Top Screen Global X (Default?) $7E:1DE2 2 Bytes Bottom Screen Global X (Default?) $7E:1DE4 2 Bytes Top Screen Global Y (Default?) $7E:1DE6 2 Bytes Bottom Screen Global Y (Default?) $7E:1DE8 2 Bytes Top Screen Azimuth (Default?) $7E:1DEA 2 Bytes Bottom Screen Azimuth (Default?) $7E:1E42 2 Bytes Player1/Top Screen something???? $8E:1E44 2 Bytes Player1/Top Screen something???? $7E:1E46 2 Bytes Player1/Top Screen something???? $7E:1E62 2 Bytes Player2/Bottom Screen something???? $7E:1E64 2 Bytes Player2/Bottom Screen something???? $7E:1E66 2 Bytes Player2/Bottom Screen something???? $7E:1E96 2 Bytes Player1 Out of Lives $7E:1E98 2 Bytes Player2 Out of Lives $7E:1EE4 2 Bytes ?? Global Clock * 2? $7E:1EE8 1 Byte ???? related to theme number [ff 00 ff ff ff ff 00 00] $7E:1EF6 2 Bytes ****Pointer to update/display routine? $7E:1EF8 2 Bytes Number of Non-Current-Player Sprites on Top Screen $7E:1EFA 2 Bytes Number of Non-Current-Player Sprites on Bottom Screen $7E:1EFC 2 Bytes Max Number of Non-Current-Player Sprites Allowed $7E:1F06 2 Bytes DEBUG MODE [0x80: screen dimming debug, 0x10: item debug, 0x04: set to last lap, ] $7E:1F24 2 Bytes ???? $7E:1F26 2 Bytes Random Number $7E:1F28 2 Bytes **Routine Offset (Used by 80:BA28 routine) $7E:1F2A 2 Bytes ????? $7E:1F3A 3 Bytes Player1 Ranking from last three races $7E:1F3D 2 Bytes uhh is 00 after getting the 1up and so another 3 races??? $7E:3A80 512 Bytes CGRAM Mirror $7E:3C80 224 Bytes Mode7 Matrix A Value Table (Word per scanline) $7E:3D60 224 Bytes Mode7 Matrix B Value Table (Word per scanline) $7E:3E40 224 Bytes Mode7 Matrix C Value Table (Word per scanline) $7E:3F20 224 Bytes Mode7 Matrix D Value Table (Word per scanline) $7E:4000 192 Bytes Top Screen Mode7 Matrix A Values $7E:A000 192 Bytes Bottom Screen Mode7 Matrix A Values??? $7F:0000 16384 Bytes Tile Sprite Map (128x128 Table) $7F:4000 4096 Bytes Flow Map of "Forward" angles of map for each 2x2 tile area $7F:5000 4096 Bytes Checkpoint data for each 2x2 tile area $7F:6C00 1024 Bytes Dust Cloud Sprites $7F:7000 1024 Bytes ? Block Sprite (Up, Down, Left, Right) $7F:7400 1024 Bytes Used ? Block Sprite (Up, Down, Left, Right) $7F:7800 1024 Bytes Speed Boost Sprite (Up, Down, Left, Right) $7F:7C00 256 Bytes Wall Blocks Sprite $7F:7D00 64 Bytes Ramp Left Sprite $7F:7D40 64 Bytes Ramp Mid (Horizontal) Sprite $7F:7D80 64 Bytes Ramp Right Sprite $7F:7DC0 64 Bytes Ramp Top Sprite $7F:7E00 64 Bytes Ramp Mid (Vertical) Sprite $7F:7E40 64 Bytes Ramp Bottom Sprite $7F:7E80 256 Bytes Oil Slick Sprite $7F:7F80 128 Bytes Coin Sprite $7F:8000 64 Bytes Dust Cloud Small Sprite $7F:8280 64 Bytes Dust Cloud Medium Sprite $7F:8500 64 Bytes Dust Cloud Large Sprite $7F:9000 4096 Bytes arctan table (Input of X and Y values, output is angle) $7F:A000 8192 Bytes 2BPP Font Sprites -$7F:C000 16384 Bytes Decompression Buffer $7F:C000 64 Bytes Happy Finish Sprite Mario $7F:C040 64 Bytes Happy Finish Sprite Luigi $7F:C080 64 Bytes Happy Finish Sprite Bowser $7F:C0C0 64 Bytes Happy Finish Sprite Peach $7F:C100 64 Bytes Happy Finish Sprite DK $7F:C140 64 Bytes Happy Finish Sprite Koopa $7F:C180 64 Bytes Happy Finish Sprite Toad $7F:C1C0 64 Bytes Happy Finish Sprite Yoshi $7F:C400 64 Bytes Happy Finish Sprite Mario $7F:C440 64 Bytes Happy Finish Sprite Luigi $7F:C480 64 Bytes Happy Finish Sprite Bowser $7F:C4C0 64 Bytes Happy Finish Sprite Peach $7F:C500 64 Bytes Happy Finish Sprite DK $7F:C540 64 Bytes Happy Finish Sprite Koopa $7F:C580 64 Bytes Happy Finish Sprite Toad $7F:C5C0 64 Bytes Happy Finish Sprite Yoshi