RAM map (Boktai 3): Difference between revisions

From Boktai Hacking Wiki
No edit summary
(Stats)
 
(29 intermediate revisions by 2 users not shown)
Line 2: Line 2:


= EWRAM =
= EWRAM =
{| class="wikitable"
{| class="wikitable exportable"
|-
|-
! 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
|i16[3]
|VIT/SPR/STR from equipment
|-
| + 0x41c
|i16[3]
|VIT/SPR/STR from stat points & cards
|-
|-
| + 0x424 || i16 || Current HP
| + 0x424 || i16 || Current HP
|-
| + 0x426 || i16 || Max HP
|-
|-
| + 0x428 || i16 || Current ENE
| + 0x428 || i16 || Current ENE
|-
|-
| 0x0203db08 || void* || Pointer to [[#World struct]], defaults to 0x0203e200 on hard reset (but moves on soft resets)
| + 0x430 || i16 || Max ENE
|-
|-
| 0x0203c508 || void* || Pointer to [[#Stat struct]], defaults to 0x0203c400 on hard reset (but moves on soft resets)
| + 0x42C || i16 || Current TRC
|-
|-
| 0x0203e308 || void* || Pointer to [[#Stat struct]], defaults to 0x0203c400 on hard reset (but moves on soft resets)
| 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 ==
== 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"
{| class="wikitable exportable"
|-
|-
! 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
|-
| 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 (Boktai 3)|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 [[Maps (Boktai 3)#Areas|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 [[Maps (Boktai 3)|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 ==
== World struct ==
Access this struct via 0x0203db08.
Access this struct via 0x02000708. Size: 0x400.


{| class="wikitable"
{| 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)
|-
| 0x19c:4 || bit[20] || ??? (bit 4 = Title: Grand master)
|}
|}


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


{| class="wikitable"
{| class="wikitable exportable"
|-
|-
! Offset || Type || Description
! Offset || Type || Description
Line 50: Line 195:
= IWRAM =
= IWRAM =


{| class="wikitable"
{| class="wikitable exportable"
|-
|-
! 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 67: Line 222:
|-
|-
| 0x03005308 || i32 || [[Random_number_generator|RNG]] index
| 0x03005308 || i32 || [[Random_number_generator|RNG]] index
|-
| 0x030053f8 || struct* || Pointer to [[#Global save data]] (always 0x030025c0)
|-
|-
| 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
|-
| 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 || [[Time|Region]] latitude
|-
| 0x0300544c || i32 || Region longitude
|}
== Global save data ==
{| class="wikitable exportable"
|-
! Offset || Type || Description
|-
| 0x00 || i32 || Global frame counter
|-
| 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]]
|}
|}



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