RAM map (Boktai 2)
This is the RAM map for Boktai 2 (U).
EWRAM
Address | Type | Description |
---|---|---|
0x0200184c | Is full moon (*0x030047f6 == 4) | |
0x02001469 | i8 | High-level solar sensor state: 0=disabled, 1=waiting for enable, 2=enabled. When going through a screen transition, this will change from 2 -> 0 -> 1 -> 2. |
0x0200146c | i16 | High-level solar sensor: Calibrated level (0=dark, 140=max brightness. Calibrated level = calibration - raw level, then clamp to 0-140) |
0x02001470 | i16 | High-level solar sensor delay: Used for delaying the state 0 -> 1 and 1 -> 2 transitions |
0x02002464 | i32 | Total EXP until next level |
Stat struct
Offset | Type | Description |
---|---|---|
0x28 | i16[6] | Stats (HP/ENE/VIT/SPR/STR/AGI) - updated from *0x03002be0 + 0x364 on screen transitions |
0x30 | i16[3] | Django(& Sabata?) position |
0x40 | i16 | Current level |
0x42 | i16 | Allocatable stat points |
0x46 | i16[5] | Weapon skill EXP (Sword/Spear/Hammer/Fists/Gun; 100 exp = 1 skil level) |
0x50 | i32 | Total EXP |
0x54 | i32 | Magic inventory (bitmask) |
0x70 | i16[48] | Item inventory slots |
0xd0 | i16[48] | Item inventory durability |
0x130 | i16[16] | Key item inventory |
0x150 | i16[32] | Accessory inventory |
0x23a | i16 | Solar bank interest rate (stored as (1+r)*64 |
0x242 | i16 | Current map ID |
0x250 | i16 | Current player form (Red Django/Black Django/Bat/Mouse/Unused/Sabata) |
0x254 | i16 | Current area ID |
0x24c | i32 | Current map's init script ID |
0x2c0 | Django: Kaamos progress | |
0x2c4 | Sabata: Kaamos progress | |
0x2c8 | Django: Kaamos status | |
0x2ce | Sabata: Kaamos status | |
0x3d0 | struct[16] | Weapon inventory |
World struct
Note: In the Japanese version, this struct is laid out slightly differently.
Offset | Type | Description |
---|---|---|
0x1e8 | i16 | Current door ID |
Scratch struct
Offset | Type | Description |
---|
IWRAM
Address | Type | Description |
---|---|---|
0x030026b4 | i32 | Solar sensor interface: State (0=measuring, 1=resetting, 2=idle) |
0x030026b8 | i32 | Solar sensor interface: Counter (0-511, counts half-cycles of the 74LV4040 counter chip) |
0x030026c0 | i32 | Solar sensor interface: shift out (next value to be written to GPIO_DATA) |
0x03002be0 | struct* | Pointer to Django's actor data? |
+ 0x35c | i16[4] | Current VIT/SPR/STR/AGI |
+ 0x364 | i32[2] | Current HP/ENE |
0x03002cb8 | code* | Pointer to TM3 interrupt handler |
0x03002cf0 | i32 | Frames since reset |
0x030045a0 | void* | Bytecode: Program counter |
0x03004690 | void* | Pointer to #Scratch struct, defaults to 0x0203da00 on hard reset (but moves on soft resets) |
0x03004698 | void* | Pointer to #Stat struct, defaults to 0x0203e200 on hard reset (but moves on soft resets) |
0x030046a0 | void* | Pointer to #World struct, defaults to 0x0203c400 on hard reset (but moves on soft resets) |
0x030047a8 | struct* | Pointer to #Global save data (always 0x030016c0) |
0x030046b8 | i32 | RNG index |
0x030047e0 | u32 | RTC date (BCD, yyyymmdd) |
0x030047e4 | u8 | RTC hours |
0x030047e5 | u8 | RTC minutes |
0x030047e6 | u8 | RTC seconds |
0x030047cc | i32 | Solar sensor interface: Timer interval (TM3CNT_LO will be set to -this value) |
0x030047f6 | i32 | Current moon phase |
0x030057b8 | i32 | Solar sensor interface: Is enabled (true/false) |
0x030057bc | i32 | Solar sensor interface: Last result (GPIO_DATA & 8) |
0x030057c8 | i32 | Solar sensor interface: Raw level (counter / 2 when GPIO_DATA & 8 becomes nonzero. 0=max brightness, 255=dark) |
Global save data
Offset | Type | Description |
---|---|---|
0x00 | i32 | Global frame counter |
0x04 | i32 | Solar sensor calibration (raw level - 2 at time of calibration)
|
0x18 | u16 | Unlock Blindbox Lv. 3 event |
0x1a | u16 | Unlock Blindbox Lv. 4 event |
0x1c | u16 | Unlock Blindbox Lv. 5 & valentine's day event |
0x1e | u16 | Unlock Something has happened to ???'s body event |
EEPROM
TODO