RAM map (Boktai 3): Difference between revisions

From Boktai Hacking Wiki
(Stats)
 
(17 intermediate revisions by 2 users not shown)
Line 6: Line 6:
! Address || Type || Description
! Address || Type || Description
|-
|-
| 0x02000580 || void* || Pointer to to Django's actor data?
| 0x02000580 || void* || Pointer to Django's actor data
|-
|-
| + 0x30 || i16[3] || Current position
| + 0x30 || i16[3] || Current position
|-
|-
| + 0x332
| + 0x332
|
|i16[3]
|VIT from equipment
|VIT/SPR/STR from equipment
|-
|-
| + 0x334
| + 0x41c
|
|i16[3]
|SPR from equipment
|VIT/SPR/STR from stat points & cards
|-
|-
| + 0x336
| + 0x424 || i16 || Current HP
|
|STR from equipment
|-
|-
| + 0x424 || i16 || Current HP
| + 0x426 || i16 || Max HP
|-
|-
| + 0x428 || i16 || Current ENE
| + 0x428 || i16 || Current ENE
|-
| + 0x430 || i16 || Max ENE
|-
|-
| + 0x42C || i16 || Current TRC
| + 0x42C || i16 || Current TRC
|-
|-
| 0x0200eec0 || || Boss HP
| 0x02000610 || script* || [[Bytecode]] interpreter: Program counter
|-
| 0x02000700 || void* || Pointer to [[#Scratch struct]], defaults to 0x0203e200 on hard reset (but moves on soft resets)
|-
| 0x0200070c || void* || Pointer to backup of the stat struct (created on screen transitions, reloaded on death, saved to save file when saving)
|-
|-
| 0x020031c1 || i8 || [[Dialogue box]] portrait
| 0x02000708 || void* || Pointer to [[#World struct]], defaults to 0x0203e200 on hard reset (but moves on soft resets)
|-
|-
| 0x0203c508 || void* || Pointer to [[#Stat struct]], defaults to 0x0203c400 on hard reset (but moves on soft resets)
| 0x0200070c || void* || Pointer to backup of the stat struct
|-
|-
| 0x0203db08 || void* || Pointer to [[#World struct]], defaults to 0x0203e200 on hard reset (but moves on soft resets)
| 0x02000710 || void* || Pointer to [[#Stat struct]], defaults to 0x0203c400 on hard reset (but moves on soft resets)
|-
|-
| 0x0203e308 || void* || Pointer to [[#Scratch struct]], defaults to 0x0203e200 on hard reset (but moves on soft resets)
| 0x0200eec0 || || Boss HP
|-
| 0x020031c1 || i8 || [[Dialogue box]] portrait
|}
|}


== Stat struct ==
== Stat struct ==
Access this struct via 0x0203c508. See also: [[Inventory (Boktai 3)]].
Access this struct via 0x02000710. Size: 0x89c. See also: [[Inventory (Boktai 3)]].


{| class="wikitable exportable"
{| class="wikitable exportable"
Line 46: Line 52:
! Offset || Type || Description
! Offset || Type || Description
|-
|-
| 0x18 || i16[4] || Stats (VIT/SPR/STR/?) - updated from *0x0200580 + ?? on screen transitions
| 0x18 || i16[4] || VIT/SPR/STR/? from stat points
|-
|0x20
|i16[4]
|VIT/SPR/STR/? from cards
|-
|-
| 0x28 || i16 || Current HP
| 0x28 || i16 || Current HP
|-
| 0x2a || i16 || Max HP
|-
|-
| 0x2c || i16 || Current ENE
| 0x2c || i16 || Current ENE
|-
| 0x2e || i16 || Max ENE
|-
|-
| 0x30 || i16[3] || Django position
| 0x30 || i16[3] || Django position
Line 87: Line 101:
|-
|-
| 0x4c0 || || Frame inventory
| 0x4c0 || || Frame inventory
|-
| 0x54a || i32 || Current map's init script ID
|-  
|-  
| 0x596 || i16 || Stuffed dolls (bitmask)
| 0x596 || i16 || Stuffed dolls (bitmask)
|-
| 0x5ac || i16 || Current [[Maps (Boktai 3)#Areas|area ID]]
|-
|-
| 0x5b8 || i32 || Acquired maps
| 0x5b8 || i32 || Acquired maps
Line 115: Line 133:
|-
|-
| 0x72c || || Library: Swords
| 0x72c || || Library: Swords
|-
| 0x740 || i16 || Current [[Maps (Boktai 3)|map ID]]
|-
|-
| 0x77c || i32 || Solar station balance
| 0x77c || i32 || Solar station balance
Line 124: Line 144:
| 0x7b0 || i16 || Solar bank balance
| 0x7b0 || i16 || Solar bank balance
|-
|-
| 0x7b2 || i16 || Bike points
| 0x7b2 || i16 || Bike battle - points
|-
| 0x7b4 || i16 || Bike battle - number of matches
|-
| 0x7b6 || i16 || Bike battle - number of wins
|-
|-
| 0x7b8 || || [[Bike]] parts: Front
| 0x7b8 || || [[Bike]] parts: Front
Line 146: Line 170:


== World struct ==
== World struct ==
Access this struct via 0x0203db08.
Access this struct via 0x02000708. Size: 0x400.


{| class="wikitable exportable"
{| class="wikitable exportable"
|-
|-
! Offset || Type || Description
! Offset || Type || Description
|-
| 0x14e:1 || bit[4] || Dark Castle B15 wing completion flags
|-
| 0x14f:5 || bit[4] || Dark Castle B9 wing completion flags
|-
|-
| 0x15d || bit[9] || Titles (Adept/Gladiator/SP Agent/Champion/Dark Hunter/Alchemist/Collector/Doll Master/Storyteller)
| 0x15d || bit[9] || Titles (Adept/Gladiator/SP Agent/Champion/Dark Hunter/Alchemist/Collector/Doll Master/Storyteller)
Line 158: Line 186:


== Scratch struct ==
== Scratch struct ==
Access this struct via 0x0203e308.
Access this struct via 0x02000700.


{| class="wikitable exportable"
{| class="wikitable exportable"
Line 170: Line 198:
|-
|-
! Address || Type || Description
! Address || Type || Description
|-
| 0x0300523c || u32 || [[Actor]] disable flags
|-
| 0x03005260 || u16 || Keypad: down buttons (active-high)
|-
| 0x03005262 || u16 || Keypad: pressed buttons (down current frame, up on previous frame)
|-
| 0x03005264 || u16 || Keypad: released buttons (up on current frame, down on previous frame)
|-
| 0x03005280 || Array || [[Actor]] list
|-
|-
| 0x030052f4 || struct* || Pointer to current [[Map file]] descriptor (usually/always 0x02000010)
| 0x030052f4 || struct* || Pointer to current [[Map file]] descriptor (usually/always 0x02000010)
Line 188: Line 226:
|-
|-
| 0x03005418 || i16[3] || [[Coordinate systems|Camera]] position
| 0x03005418 || i16[3] || [[Coordinate systems|Camera]] position
|-
| 0x03005430 || u32 || RTC date (BCD, yyyymmdd)
|-
| 0x03005434 || u8 || RTC hours
|-
| 0x03005435 || u8 || RTC minutes
|-
| 0x03005436 || u8 || RTC seconds
|-
| 0x03005437 || u8 || RTC frames
|-
| 0x03005438 || u8 || RTC day of week
|-
|-
| 0x0300543a || u8 || [[Time|Sunrise]] hours
| 0x0300543a || u8 || [[Time|Sunrise]] hours
Line 195: Line 245:
| 0x0300543c || u8 || Sunset hours
| 0x0300543c || u8 || Sunset hours
|-
|-
| 0x0300543d || u8 || Sunrise minutes
| 0x0300543d || u8 || Sunset minutes
|-
| 0x0300543e || u8 || Unknown, sunrise/sunset related
|-
| 0x0300543f || u8 || Unknown, sunrise/sunset related
|-
| 0x03005440 || u8 || Hours until sunset
|-
| 0x03005441 || u8 || Minutes until sunset
|-
| 0x03005442 || u8 || Hours until sunrise
|-
| 0x03005443 || u8 || Minutes until sunries
|-
| 0x03005448 || i32 || [[Time|Region]] latitude
|-
| 0x0300544c || i32 || Region longitude
|}
|}


Line 207: Line 273:
|-
|-
| 0x04 || i32 || Solar sensor calibration (<code>raw_level - 2</code> at time of calibration)
| 0x04 || i32 || Solar sensor calibration (<code>raw_level - 2</code> at time of calibration)
|-
| 0x0b || u8 || Daylight savings time active
|-
|-
| 0x18 || i32 || [[Time|Region ID]]
| 0x18 || i32 || [[Time|Region ID]]

Latest revision as of 20:48, 12 November 2024

This is the RAM map for Boktai 3 (J).

EWRAM

Address Type Description
0x02000580 void* Pointer to Django's actor data
+ 0x30 i16[3] Current position
+ 0x332 i16[3] VIT/SPR/STR from equipment
+ 0x41c i16[3] VIT/SPR/STR from stat points & cards
+ 0x424 i16 Current HP
+ 0x426 i16 Max HP
+ 0x428 i16 Current ENE
+ 0x430 i16 Max ENE
+ 0x42C i16 Current TRC
0x02000610 script* Bytecode interpreter: Program counter
0x02000700 void* Pointer to #Scratch struct, defaults to 0x0203e200 on hard reset (but moves on soft resets)
0x0200070c void* Pointer to backup of the stat struct (created on screen transitions, reloaded on death, saved to save file when saving)
0x02000708 void* Pointer to #World struct, defaults to 0x0203e200 on hard reset (but moves on soft resets)
0x0200070c void* Pointer to backup of the stat struct
0x02000710 void* Pointer to #Stat struct, defaults to 0x0203c400 on hard reset (but moves on soft resets)
0x0200eec0 Boss HP
0x020031c1 i8 Dialogue box portrait

Stat struct

Access this struct via 0x02000710. Size: 0x89c. See also: Inventory (Boktai 3).

Offset Type Description
0x18 i16[4] VIT/SPR/STR/? from stat points
0x20 i16[4] VIT/SPR/STR/? from cards
0x28 i16 Current HP
0x2a i16 Max HP
0x2c i16 Current ENE
0x2e i16 Max ENE
0x30 i16[3] Django position
0x42 i16 Allocatable stat points
0x48 i32 Total EXP
0x50 i16[8] Current equipment (Weapon/Lens/Head/Body/Arms/Legs/?/?)
0x68 Quick change list (sword)
0x78 Quick change list (frame)
0x90 Quick change list (lens)
0xa0 i16[48] Item inventory slots
0xc0 Warehouse item box 1
0xe0 Warehouse item box 2
0x100 i16[48] Item inventory durability (negative = chocolate-covered)
0x160 Accessory inventory
0x180 Warehouse accessory box 1
0x1a0 Warehouse accessory box 2
0x1c0 Sword inventory
0x2c0 Warehouse sword box 1
0x3c0 Warehouse sword box 2
0x4c0 Frame inventory
0x54a i32 Current map's init script ID
0x596 i16 Stuffed dolls (bitmask)
0x5ac i16 Current area ID
0x5b8 i32 Acquired maps
0x608 i32 TRC gauge (0-1000)
0x610 i16 Mr. Rainnot enabled
0x638 i32 Red Django use
0x63c i32 Black Django use
0x6f0 Library: Monsters
0x701 Library: Monster items
0x720 Library: Head
0x721 Library: Body
0x722 Library: Body
0x723 Library: Arms
0x724 Library: Legs
0x72c Library: Swords
0x740 i16 Current map ID
0x77c i32 Solar station balance
0x780 char[16] Player name
0x780 char[?] Coffin bike name
0x7b0 i16 Solar bank balance
0x7b2 i16 Bike battle - points
0x7b4 i16 Bike battle - number of matches
0x7b6 i16 Bike battle - number of wins
0x7b8 Bike parts: Front
0x7bc Bike parts: Tires
0x7c0 Bike parts: Body
0x7c4 Bike parts: Special
0x7f8 Bike parts: Color
0x81c Bike parts: Options
0x828 Lens inventory
0x838 Key item inventory
0x876 Solar sensor: Bars

World struct

Access this struct via 0x02000708. Size: 0x400.

Offset Type Description
0x14e:1 bit[4] Dark Castle B15 wing completion flags
0x14f:5 bit[4] Dark Castle B9 wing completion flags
0x15d bit[9] Titles (Adept/Gladiator/SP Agent/Champion/Dark Hunter/Alchemist/Collector/Doll Master/Storyteller)
0x19c:4 bit[20] ??? (bit 4 = Title: Grand master)

Scratch struct

Access this struct via 0x02000700.

Offset Type Description

IWRAM

Address Type Description
0x0300523c u32 Actor disable flags
0x03005260 u16 Keypad: down buttons (active-high)
0x03005262 u16 Keypad: pressed buttons (down current frame, up on previous frame)
0x03005264 u16 Keypad: released buttons (up on current frame, down on previous frame)
0x03005280 Array Actor list
0x030052f4 struct* Pointer to current Map file descriptor (usually/always 0x02000010)
+ 0x00 i32 Number of Zones
+ 0x04 void* Pointer to map file tile data
+ 0x0c void* Pointer to map file zones
+ 0x10 void* Pointer to map file unknown block 1
+ 0x14 void* Pointer to map file unknown block 2
0x03005308 i32 RNG index
0x030053f8 struct* Pointer to #Global save data (always 0x030025c0)
0x03005418 i16[3] Camera position
0x03005430 u32 RTC date (BCD, yyyymmdd)
0x03005434 u8 RTC hours
0x03005435 u8 RTC minutes
0x03005436 u8 RTC seconds
0x03005437 u8 RTC frames
0x03005438 u8 RTC day of week
0x0300543a u8 Sunrise hours
0x0300543b u8 Sunrise minutes
0x0300543c u8 Sunset hours
0x0300543d u8 Sunset minutes
0x0300543e u8 Unknown, sunrise/sunset related
0x0300543f u8 Unknown, sunrise/sunset related
0x03005440 u8 Hours until sunset
0x03005441 u8 Minutes until sunset
0x03005442 u8 Hours until sunrise
0x03005443 u8 Minutes until sunries
0x03005448 i32 Region latitude
0x0300544c i32 Region longitude

Global save data

Offset Type Description
0x00 i32 Global frame counter
0x04 i32 Solar sensor calibration (raw_level - 2 at time of calibration)
0x0b u8 Daylight savings time active
0x18 i32 Region ID

EEPROM

TODO

Save data checksums